Skip to content

Commit 57569e0

Browse files
authored
Add note on supported Rust versions for rustdoc JSON format. (#139)
* Add note on supported Rust versions for rustdoc JSON format. Update broken links and references in documentation. * Split out CONTRIBUTING changes. * Generally clean up README.
1 parent a9df085 commit 57569e0

File tree

1 file changed

+39
-12
lines changed

1 file changed

+39
-12
lines changed

README.md

+39-12
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,37 @@ or other reference pages, as appropriate. It also includes the item name
2929
and file location that are the cause of the problem, as well as a link
3030
to the implementation of that query in the current version of the tool.
3131
32-
Notes:
33-
- If using it on a massive codebase (multiple hundreds of thousands of lines of Rust),
34-
the queries may be a bit slow: there is some `O(n^2)` scaling for `n` items in a few places that
35-
I haven't had time to optimize down to `O(n)` yet. Apologies! I have temporarily prioritized
36-
features over speed, and the runtime will improve significantly with a small amount of extra work.
37-
- **No false positives**: Currently, all queries report constructive proof of semver violations:
38-
there are no false positives. They always list a file name and line number for the baseline item
39-
that could not be found in the new code.
40-
- **There are false negatives**: This tool is a work-in-progress, and cannot check all kinds of
41-
semver violations yet. Just because it doesn't find any semver issues doesn't mean
42-
they don't exist.
43-
4432
## FAQ
4533
34+
### What Rust versions does `cargo-semver-checks` support?
35+
36+
`cargo-semver-checks` uses the rustdoc tool to analyze the crate's API.
37+
Rustdoc's JSON output format isn't stable, and can have breaking changes in new Rust versions.
38+
39+
When each `cargo-semver-checks` version is released, it will at minimum include support
40+
for the then-current stable and beta Rust versions. It may, but is not guaranteed to,
41+
additionally support some nightly Rust versions.
42+
43+
[The GitHub Action](https://github.com/obi1kenobi/cargo-semver-checks-action) uses
44+
the most recent versions of both `cargo-semver-checks` and stable Rust,
45+
so it should be unaffected. Users using `cargo-semver-checks` in other ways
46+
are encouraged to update `cargo-semver-checks` when updating Rust versions
47+
to ensure continued compatibility.
48+
49+
### Does `cargo-semver-checks` have false positives or false negatives?
50+
51+
"False positive" means that `cargo-semver-checks` reported a semver violation incorrectly.
52+
This should never happen, and is considered a bug.
53+
54+
"False negative" means that `cargo-semver-checks` failed to report a semver violation.
55+
There are many ways to break semver, and `cargo-semver-checks`
56+
[doesn't yet have lints for all of them](https://github.com/obi1kenobi/cargo-semver-check/issues/5).
57+
We offer mentorship for
58+
[contributing new lints](https://github.com/obi1kenobi/cargo-semver-check/issues?q=is%3Aopen+is%3Aissue+label%3AA-lint+label%3AE-help-wanted).
59+
Please check out
60+
[Contributing](https://github.com/obi1kenobi/cargo-semver-check/blob/main/CONTRIBUTING.md)
61+
for details.
62+
4663
### Why `cargo-semver-checks` instead of ...?
4764

4865
[rust semverver](https://github.com/rust-lang/rust-semverver) builds on top of
@@ -75,6 +92,16 @@ like `cargo-semver-checks`, but focuses more on API diffing (showing which
7592
items has changed) and not API linting (explaining why they have changed and
7693
providing control over what counts).
7794

95+
### Why is scanning massive crates slow?
96+
97+
Crates that are ~100,000+ lines of Rust may currently experience scan times
98+
of a several minutes due to some missing optimizations.
99+
100+
For implementation convenience, there's some `O(n^2)` scaling for `n` items in a few places.
101+
If your crate is negatively affected by this,
102+
[please let us know](https://github.com/obi1kenobi/cargo-semver-check/issues/new?assignees=&labels=C-bug&template=bug_report.yml)
103+
so we can best prioritize optimization versus feature work.
104+
78105
### Why is it sometimes `cargo-semver-check` and `cargo-semver-checks`?
79106

80107
This crate was intended to be published under the name `cargo-semver-check`, and may indeed one

0 commit comments

Comments
 (0)