dtolnay / rustversion

Conditional compilation according to rustc compiler version
Apache License 2.0
326 stars 15 forks source link

Matching wrong nightly versions by 1 day #41

Open wmmc88 opened 9 months ago

wmmc88 commented 9 months ago

version: rustversion = "1.0.14"

#[rustversion::nightly(2023-09-13)]
fn main() {
    println!("Hello, world!");
}

With nightly-2023-09-13:

cargo +nightly-2023-09-13 b
   Compiling rustversion v1.0.14
   Compiling rust-version-test v0.1.0 (D:\git-repos\github\rust-version-test)
error[E0601]: `main` function not found in crate `rust_version_test`
 --> src\main.rs:4:2
  |
4 | }
  |  ^ consider adding a `main` function to `src\main.rs`

For more information about this error, try `rustc --explain E0601`.
error: could not compile `rust-version-test` (bin "rust-version-test") due to previous error

With nightly-2023-09-14:

 cargo +nightly-2023-09-14 b
   Compiling rustversion v1.0.14
   Compiling rust-version-test v0.1.0 (D:\git-repos\github\rust-version-test)
    Finished dev [unoptimized + debuginfo] target(s) in 1.86s

As you can see, it fails to compile on nightly-2023-09-13, but succeeds on nightly-2023-09-14. I would expect the opposite behaviour to be true. It seems like the nightly version name is off by 1 compared to what rustversion thinks it is. I'm not sure if this is a bug in rustversion or in how the rust releases tag their names.

wmmc88 commented 8 months ago

I think the date used in the rustversion macro corresponds with the date of the latest commit in that particular nightly build, and not the name of the nightly which matches the archive date. I think this should probably be called out in the documentation for this crate.