@@ -29,20 +29,37 @@ or other reference pages, as appropriate. It also includes the item name
29
29
and file location that are the cause of the problem, as well as a link
30
30
to the implementation of that query in the current version of the tool.
31
31
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
-
44
32
## FAQ
45
33
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
+
46
63
# ## Why `cargo-semver-checks` instead of ...?
47
64
48
65
[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
75
92
items has changed) and not API linting (explaining why they have changed and
76
93
providing control over what counts).
77
94
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
+
78
105
# ## Why is it sometimes `cargo-semver-check` and `cargo-semver-checks`?
79
106
80
107
This crate was intended to be published under the name `cargo-semver-check`, and may indeed one
0 commit comments