Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unstable Feature Usage Metrics #129485

Open
6 tasks
yaahc opened this issue Aug 23, 2024 · 0 comments
Open
6 tasks

Unstable Feature Usage Metrics #129485

yaahc opened this issue Aug 23, 2024 · 0 comments
Labels
A-metrics Area: Metrics C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@yaahc
Copy link
Member

yaahc commented Aug 23, 2024

Unstable Feature Usage Metrics

Track unstable feature usage trends by Rust users.

Motivation

  • Support feature stabilization prioritization.
  • Helping teams know which unstable features to invest their energy into.
  • Evaluating how representative crates.io is as a sample of the rust ecosystem (will we see different patterns in crates.io feature usage vs private feature usage?)

Context

Steps / History (PROVISIONAL)

  • define the format the metrics will be stored in
  • add flag to dump unstable feature status metrics (what features exist, if they're stable or not, both for library and lang/compiler, tidy may already support this for lib features)
  • add flag to enable unstable feature usage metrics in the compiler
  • front end to display reports based on gathered usage and status metrics
  • back end to save metrics data from published crates.io crates (private data should be anonymous and stored separately once we have established the ability to gather that in a statistically relevant volume)
  • integrate with docs.rs to have it gather metrics and upload them to the backend while building newly uploaded crate versions
@yaahc yaahc added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. A-metrics Area: Metrics labels Aug 23, 2024
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Aug 23, 2024
@fmease fmease added C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Aug 23, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Nov 21, 2024
…tebank

unstable feature usage metrics

example output

```
test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cat src/lib.rs
───────┬───────────────────────────────────────────────────────
       │ File: src/lib.rs
───────┼───────────────────────────────────────────────────────
   1   │ #![feature(unix_set_mark)]
   2   │ pub fn add(left: u64, right: u64) -> u64 {
   3   │     left + right
   4   │ }
   5   │
   6   │ #[cfg(test)]
   7   │ mod tests {
   8   │     use super::*;
   9   │
  10   │     #[test]
  11   │     fn it_works() {
  12   │         let result = add(2, 2);
  13   │         assert_eq!(result, 4);
  14   │     }
  15   │ }
───────┴───────────────────────────────────────────────────────

test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cargo +stage1 rustc -- -Zmetrics-dir=$PWD/metrics
   Compiling test-lib v0.1.0 (/home/yaahc/tmp/test-lib)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s

test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cat metrics/unstable_feature_usage.json
───────┬─────────────────────────────────────────────────────────────────────
       │ File: metrics/unstable_feature_usage.json
───────┼─────────────────────────────────────────────────────────────────────
   1   │ {"lib_features":[{"symbol":"unix_set_mark"}],"lang_features":[]}
   ```

   related to rust-lang#129485
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Nov 21, 2024
Rollup merge of rust-lang#130236 - yaahc:unstable-feature-usage, r=estebank

unstable feature usage metrics

example output

```
test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cat src/lib.rs
───────┬───────────────────────────────────────────────────────
       │ File: src/lib.rs
───────┼───────────────────────────────────────────────────────
   1   │ #![feature(unix_set_mark)]
   2   │ pub fn add(left: u64, right: u64) -> u64 {
   3   │     left + right
   4   │ }
   5   │
   6   │ #[cfg(test)]
   7   │ mod tests {
   8   │     use super::*;
   9   │
  10   │     #[test]
  11   │     fn it_works() {
  12   │         let result = add(2, 2);
  13   │         assert_eq!(result, 4);
  14   │     }
  15   │ }
───────┴───────────────────────────────────────────────────────

test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cargo +stage1 rustc -- -Zmetrics-dir=$PWD/metrics
   Compiling test-lib v0.1.0 (/home/yaahc/tmp/test-lib)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.08s

test-lib on  master [?] is 📦 v0.1.0 via 🦀 v1.80.1
❯ cat metrics/unstable_feature_usage.json
───────┬─────────────────────────────────────────────────────────────────────
       │ File: metrics/unstable_feature_usage.json
───────┼─────────────────────────────────────────────────────────────────────
   1   │ {"lib_features":[{"symbol":"unix_set_mark"}],"lang_features":[]}
   ```

   related to rust-lang#129485
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-metrics Area: Metrics C-tracking-issue Category: A tracking issue for an RFC or an unstable feature. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants