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

Remove time 0.1 as optional dependency #1095

Merged
merged 4 commits into from
Sep 7, 2023

Conversation

pitdicker
Copy link
Collaborator

@pitdicker pitdicker commented May 28, 2023

See #1073.

Fixes #876, #285.

src/date.rs Show resolved Hide resolved
@pitdicker pitdicker force-pushed the remove_time_0.1 branch 2 times, most recently from db744aa to 37592e2 Compare May 31, 2023 11:24
@pitdicker
Copy link
Collaborator Author

pitdicker commented May 31, 2023

I have started a crater(-like) run.

It only checks if a crate still builds with this patch.
If chrono is a dev-dependency or an optional dependency it will not notice a regression.
If a crate fails to build for whatever reason without the patch it will also not be counted.

In the first 500 crates it found 5 regressions, of which as far as I can see 2 are real:

@djc
Copy link
Member

djc commented May 31, 2023

Do you have full error messages for these?

@pitdicker
Copy link
Collaborator Author

It is all pretty manual 😞.

This is the error for u2fs-rs (still have the terminal with my manual run open):

    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking u2f v0.2.0 (/home/pitdicker/dev/u2f-rs)
error[E0308]: mismatched types
  --> src/util.rs:25:5
   |
20 | pub fn expiration(timestamp: String) -> Duration {
   |                                         -------- expected `time::Duration` because of return type
...
25 |     now.signed_duration_since(ts.unwrap())
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `time::Duration`, found `chrono::Duration`
   |
   = note: `chrono::Duration` and `time::Duration` have similar names, but are actually distinct types
note: `chrono::Duration` is defined in crate `chrono`
  --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
   |
55 | pub struct Duration {
   | ^^^^^^^^^^^^^^^^^^^
note: `time::Duration` is defined in crate `time`
  --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
   |
45 | pub struct Duration {
   | ^^^^^^^^^^^^^^^^^^^

warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
  --> src/u2ferror.rs:62:44
   |
62 |             U2fError::OpenSSLError(e) => e.description(),
   |                                            ^^^^^^^^^^^
   |
   = note: `#[warn(deprecated)]` on by default

For more information about this error, try `rustc --explain E0308`.
warning: `u2f` (lib) generated 1 warning
error: could not compile `u2f` due to previous error; 1 warning emitted

And astrolab-smart-coffee-types:

    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking actix-http v1.0.1
    Checking bson v0.14.1
error[E0277]: cannot subtract `chrono::Duration` from `Tm`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/jar.rs:224:44
    |
224 |             cookie.set_expires(time::now() - Duration::days(365));
    |                                            ^ no implementation for `Tm - chrono::Duration`
    |
    = help: the trait `Sub<chrono::Duration>` is not implemented for `Tm`
    = help: the following other types implement trait `Sub<Rhs>`:
              <Tm as Sub<time::Duration>>
              <Tm as Sub>

error[E0308]: mismatched types
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/mod.rs:736:40
    |
736 |         self.set_expires(time::now() + twenty_years);
    |                                        ^^^^^^^^^^^^ expected `time::Duration`, found `chrono::Duration`
    |
    = note: `chrono::Duration` and `time::Duration` have similar names, but are actually distinct types
note: `chrono::Duration` is defined in crate `chrono`
   --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
    |
55  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^
note: `time::Duration` is defined in crate `time`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
    |
45  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^

Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `actix-http` due to 2 previous errors

@jhpratt
Copy link

jhpratt commented May 31, 2023

It is all pretty manual

Something I've wanted before is to have a crater-like program for ordinary crates. This serves as a good reminder for me to work on it.

Of the two regressions found, one appears unmaintained and the other doesn't appear to actually be used for anything (most days have a download count of zero).

@pitdicker
Copy link
Collaborator Author

Now at crate 1000 of the 7227. I will report back when finished.

One more regression found:
float_duration 0.3.3

Error
    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking float_duration v0.3.3 (/home/pitdicker/dev/rust-float-duration)
warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
   --> src/duration.rs:376:50
    |
376 | impl<Tz: chrono::TimeZone> TimePoint for chrono::Date<Tz> {
    |                                                  ^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: use of deprecated struct `chrono::Date`: Use `NaiveDate` or `DateTime<Tz>` instead
   --> src/duration.rs:379:50
    |
379 |     fn float_duration_since(self, since: chrono::Date<Tz>) -> Result<FloatDuration, ()> {
    |                                                  ^^^^

error[E0277]: `?` couldn't convert the error to `error::OutOfRangeError`
   --> src/duration.rs:299:71
    |
299 |         let chrono_duration = chrono::Duration::from_std(std_duration)?;
    |                                                                       ^ the trait `From<chrono::OutOfRangeError>` is not implemented for `error::OutOfRangeError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `From<time::OutOfRangeError>` is implemented for `error::OutOfRangeError`
    = note: required for `Result<chrono::Duration, error::OutOfRangeError>` to implement `FromResidual<Result<Infallible, chrono::OutOfRangeError>>`

warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
  --> src/error.rs:25:30
   |
25 |         write!(f, "{}", self.description())
   |                              ^^^^^^^^^^^

For more information about this error, try `rustc --explain E0277`.
warning: `float_duration` (lib) generated 3 warnings
error: could not compile `float_duration` due to previous error; 3 warnings emitted

@pitdicker
Copy link
Collaborator Author

pitdicker commented May 31, 2023

This is the primitive code I am using:

use crates_io_api::SyncClient;
use rustwide::{cmd::SandboxBuilder, Crate, Toolchain, WorkspaceBuilder};
use std::error::Error;
use std::path::Path;

fn main() -> Result<(), Box<dyn Error>> {
    let crates = SyncClient::new(
        "chrono (https://github.com/chronotope/chrono)",
        std::time::Duration::from_millis(1000),
    )?;

    let workspace = WorkspaceBuilder::new(Path::new("/home/pitdicker/crater"), "").init()?;
    let toolchain = Toolchain::dist("stable");
    let sandbox = SandboxBuilder::new()
        .memory_limit(Some(1 * 1024 * 1024 * 1024))
        .enable_networking(false);

    crates
        .crate_reverse_dependencies("chrono")?
        .dependencies
        .iter()
        .for_each(|dep| {
            let id = dep.crate_version.crate_name.clone();
            let num = dep.crate_version.num.clone();
            let crate_id = format!("{} {} (chrono {})", &id, &num, &dep.dependency.req);

            let krate = Crate::crates_io(&id, &num);
            krate.fetch(&workspace).unwrap();
            let mut build_dir = workspace.build_dir("build");

            let new = build_dir
                .build(&toolchain, &krate, sandbox.clone())
                .patch_with_git(
                    "chrono",
                    "https://github.com/pitdicker/chrono",
                    "remove_time_0.1",
                )
                .run(|build| {
                    build.cargo().args(&["check"]).run()?;
                    Ok(())
                });

            if new.is_ok() {
                println!("{}: keeps building", crate_id);
            } else {
                match build_dir
                    .build(&toolchain, &krate, sandbox.clone())
                    .run(|build| {
                        build.cargo().args(&["check"]).run()?;
                        Ok(())
                    }) {
                    Ok(_) => println!("{}: regressed", crate_id),
                    Err(e) => println!("{}: failed to build. {:?}", crate_id, e),
                }
            }
        });

    Ok(())
}

@djc
Copy link
Member

djc commented May 31, 2023

@pitdicker awesome work, thanks for getting this done!

@pitdicker
Copy link
Collaborator Author

Thank you. But the run is only at 20% now, it wil take some more time...

@pitdicker
Copy link
Collaborator Author

pitdicker commented Jun 1, 2023

I have stopped the run at 3000 crates. What order crates.io returns reverse dependencies I don't know exactly. It is some combination of popularity, or downloads, or number of reverse dependencies. Anyway, after 3000 crates we are in the long tail of one-off projects with less than 1500 downloads, no reverse dependencies, and in quite a number of cases unmaintained.

Found 6 more regressions:

exonum-api 1.0.0. Depends on old version of actix-http-1.0.1, seems to be fixed on master

Error message
    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking actix-http v1.0.1
error[E0277]: cannot subtract `chrono::Duration` from `Tm`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/jar.rs:224:44
    |
224 |             cookie.set_expires(time::now() - Duration::days(365));
    |                                            ^ no implementation for `Tm - chrono::Duration`
    |
    = help: the trait `Sub<chrono::Duration>` is not implemented for `Tm`
    = help: the following other types implement trait `Sub<Rhs>`:
              <Tm as Sub<time::Duration>>
              <Tm as Sub>

error[E0308]: mismatched types
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/mod.rs:736:40
    |
736 |         self.set_expires(time::now() + twenty_years);
    |                                        ^^^^^^^^^^^^ expected `time::Duration`, found `chrono::Duration`
    |
    = note: `chrono::Duration` and `time::Duration` have similar names, but are actually distinct types
note: `chrono::Duration` is defined in crate `chrono`
   --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
    |
55  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^
note: `time::Duration` is defined in crate `time`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
    |
45  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^

Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `actix-http` due to 2 previous errors

nature-db. Depends on old version of actix-http-1.0.1:

Error message
    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking actix-http v1.0.1
    Checking mysql_common v0.22.2
error[E0277]: cannot subtract `chrono::Duration` from `Tm`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/jar.rs:224:44
    |
224 |             cookie.set_expires(time::now() - Duration::days(365));
    |                                            ^ no implementation for `Tm - chrono::Duration`
    |
    = help: the trait `Sub<chrono::Duration>` is not implemented for `Tm`
    = help: the following other types implement trait `Sub<Rhs>`:
              <Tm as Sub<time::Duration>>
              <Tm as Sub>

error[E0308]: mismatched types
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-http-1.0.1/src/cookie/mod.rs:736:40
    |
736 |         self.set_expires(time::now() + twenty_years);
    |                                        ^^^^^^^^^^^^ expected `time::Duration`, found `chrono::Duration`
    |
    = note: `chrono::Duration` and `time::Duration` have similar names, but are actually distinct types
note: `chrono::Duration` is defined in crate `chrono`
   --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
    |
55  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^
note: `time::Duration` is defined in crate `time`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
    |
45  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^

    Checking mysql_async v0.23.1
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `actix-http` due to 2 previous errors
warning: build failed, waiting for other jobs to finish...

chrono-utilities 0.0.0-alpha1

Error message
    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking chrono-utilities v0.0.0-alpha1 (/home/pitdicker/dev/chrono-utils)
error[E0308]: mismatched types
    --> src/naive/mod.rs:213:33
     |
213  |         self.checked_sub_signed(OldDuration::days(days))
     |              ------------------ ^^^^^^^^^^^^^^^^^^^^^^^ expected `chrono::Duration`, found `oldtime::Duration`
     |              |
     |              arguments to this method are incorrect
     |
     = note: `oldtime::Duration` and `chrono::Duration` have similar names, but are actually distinct types
note: `oldtime::Duration` is defined in crate `time`
    --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
     |
45   | pub struct Duration {
     | ^^^^^^^^^^^^^^^^^^^
note: `chrono::Duration` is defined in crate `chrono`
    --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
     |
55   | pub struct Duration {
     | ^^^^^^^^^^^^^^^^^^^
note: method defined here
    --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/naive/date.rs:1111:12
     |
1111 |     pub fn checked_sub_signed(self, rhs: OldDuration) -> Option<NaiveDate> {
     |            ^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
    --> src/naive/mod.rs:236:33
     |
236  |         self.checked_add_signed(OldDuration::days(days))
     |              ------------------ ^^^^^^^^^^^^^^^^^^^^^^^ expected `chrono::Duration`, found `oldtime::Duration`
     |              |
     |              arguments to this method are incorrect
     |
     = note: `oldtime::Duration` and `chrono::Duration` have similar names, but are actually distinct types
note: `oldtime::Duration` is defined in crate `time`
    --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
     |
45   | pub struct Duration {
     | ^^^^^^^^^^^^^^^^^^^
note: `chrono::Duration` is defined in crate `chrono`
    --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
     |
55   | pub struct Duration {
     | ^^^^^^^^^^^^^^^^^^^
note: method defined here
    --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/naive/date.rs:1079:12
     |
1079 |     pub fn checked_add_signed(self, rhs: OldDuration) -> Option<NaiveDate> {
     |            ^^^^^^^^^^^^^^^^^^

error[E0277]: cannot subtract `oldtime::Duration` from `NaiveDate`
   --> src/naive/mod.rs:350:49
    |
350 |             Some(week_start) => Some(week_start - OldDuration::days(7)),
    |                                                 ^ no implementation for `NaiveDate - oldtime::Duration`
    |
    = help: the trait `Sub<oldtime::Duration>` is not implemented for `NaiveDate`
    = help: the following other types implement trait `Sub<Rhs>`:
              <NaiveDate as Sub<Days>>
              <NaiveDate as Sub<Months>>
              <NaiveDate as Sub<chrono::Duration>>
              <NaiveDate as Sub>

error[E0277]: cannot subtract `oldtime::Duration` from `NaiveDate`
   --> src/naive/mod.rs:372:49
    |
372 |             Some(week_start) => Some(week_start - OldDuration::days(1)),
    |                                                 ^ no implementation for `NaiveDate - oldtime::Duration`
    |
    = help: the trait `Sub<oldtime::Duration>` is not implemented for `NaiveDate`
    = help: the following other types implement trait `Sub<Rhs>`:
              <NaiveDate as Sub<Days>>
              <NaiveDate as Sub<Months>>
              <NaiveDate as Sub<chrono::Duration>>
              <NaiveDate as Sub>

error[E0277]: cannot add `oldtime::Duration` to `NaiveDate`
   --> src/naive/mod.rs:486:49
    |
486 |             Some(week_start) => Some(week_start + OldDuration::days(7)),
    |                                                 ^ no implementation for `NaiveDate + oldtime::Duration`
    |
    = help: the trait `Add<oldtime::Duration>` is not implemented for `NaiveDate`
    = help: the following other types implement trait `Add<Rhs>`:
              <NaiveDate as Add<Days>>
              <NaiveDate as Add<Months>>
              <NaiveDate as Add<chrono::Duration>>

error[E0277]: cannot add `oldtime::Duration` to `NaiveDate`
   --> src/naive/mod.rs:508:49
    |
508 |             Some(week_start) => Some(week_start + OldDuration::days(6)),
    |                                                 ^ no implementation for `NaiveDate + oldtime::Duration`
    |
    = help: the trait `Add<oldtime::Duration>` is not implemented for `NaiveDate`
    = help: the following other types implement trait `Add<Rhs>`:
              <NaiveDate as Add<Days>>
              <NaiveDate as Add<Months>>
              <NaiveDate as Add<chrono::Duration>>

Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `chrono-utilities` due to 6 previous errors

game_time 0.2.0 => depends on float_duration

eternal 0.3.2. github repo no longer exists.

Error message
    Updating git repository `https://github.com/pitdicker/chrono`
    Checking chrono v0.4.26 (https://github.com/pitdicker/chrono?branch=remove_time_0.1#37592e2c)
    Checking eternal v0.3.2 (/home/pitdicker/dev/eternal-0.3.2)
error[E0277]: cannot subtract `chrono::Duration` from `Tm`
   --> src/http/cookie/jar.rs:224:44
    |
224 |             cookie.set_expires(time::now() - Duration::days(365));
    |                                            ^ no implementation for `Tm - chrono::Duration`
    |
    = help: the trait `Sub<chrono::Duration>` is not implemented for `Tm`
    = help: the following other types implement trait `Sub<Rhs>`:
              <Tm as Sub<time::Duration>>
              <Tm as Sub>

error[E0308]: mismatched types
   --> src/http/cookie/mod.rs:736:40
    |
736 |         self.set_expires(time::now() + twenty_years);
    |                                        ^^^^^^^^^^^^ expected `time::Duration`, found `chrono::Duration`
    |
    = note: `chrono::Duration` and `time::Duration` have similar names, but are actually distinct types
note: `chrono::Duration` is defined in crate `chrono`
   --> /home/pitdicker/.cargo/git/checkouts/chrono-d04828efa9195fa2/37592e2/src/duration.rs:55:1
    |
55  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^
note: `time::Duration` is defined in crate `time`
   --> /home/pitdicker/.cargo/registry/src/github.com-1ecc6299db9ec823/time-0.1.45/src/duration.rs:45:1
    |
45  | pub struct Duration {
    | ^^^^^^^^^^^^^^^^^^^

Some errors have detailed explanations: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `eternal` due to 2 previous errors

This brings the number my primitive crater run found to 9 crates. 3 of those fail to compile the old dependency actix-http-1.0.1. And eternal 0.3.2 seems to have vendored that code.

All haven't seen a release in a couple of years, and don't really effect the crates.io ecosystem.

@djc
Copy link
Member

djc commented Jun 1, 2023

So to put everything together:

  • astrolab-smart-coffee-types
    • No dependents
    • Some download spikes, but 0 downloads on most days
    • Last release 2.5 years ago
    • No public repository
  • u2f
    • 2 dependents, with a total of 219 all-time downloads
    • ~10 daily downloads with some spikes in the hundreds over the past 2 weeks (from Tauri folks?)
    • Last release 3.5 years ago
    • Last commit 3.5 years ago
  • float_duration
    • 2 dependents, with a total of ~3k all-time downloads
      • osmon had its most recent release 1 month ago, 0 downloads on most days with some single-digit spikes
    • Last release 6 years ago
    • Last commit 4 years ago
  • exonum-api 1.0.0 -> via actix-http 1.0.1
    • 6 dependents, all from the Exonum project, -testkit has 16k all-time downloads
    • ~5 daily downloads
    • Last release 3 years ago
    • Last commit is a few months old, last non-Dependabot commit is from October
  • nature-db -> via actix-http 1.0.1
    • 1 dependent, from the same author/project, 3k all-time downloads
    • ~1 daily download
    • Last release 3 years ago
    • Last commit 3 years ago, repo is archived
  • chrono-utilities 0.0.0-alpha1
    • No dependents
    • ~7 daily downloads
    • Last release 3 years ago
    • Last commit 3 years ago
  • game_time 0.2.0 => depends on float_duration
    • Same author as float_duration
  • eternal 0.3.2
    • 2 dependents related to the same project, 2k all-time downloads
    • ~1 daily download
    • Last release 3 years ago
    • No public repository

I've asked an Actix maintainer whether it would be feasible to release an actix-http 1.0.2 to fix those dependencies. We should probably do some outreach for u2f/Tauri and float_duration/Osmon.

@pitdicker
Copy link
Collaborator Author

Made a PR to u2f: wisespace-io/u2f-rs#9

@pitdicker
Copy link
Collaborator Author

And a PR against float-duration: tylerreisinger/rust-float-duration#5

@djc
Copy link
Member

djc commented Jun 1, 2023

Filed a heads-up against the tauri-plugin-authenticator repo in tauri-apps/plugins-workspace#411. Seems they don't want us to block on their usage.

The Actix maintainer does not want to issue an actix-http 1.0.2 release because that stuff might also have vulnerabilities and/or license violations in it, they will look into helping their downstreams to upgrade to a newer Actix release.

@pitdicker pitdicker mentioned this pull request Jun 8, 2023
@pitdicker pitdicker force-pushed the remove_time_0.1 branch 2 times, most recently from e981f3f to a9656c2 Compare June 8, 2023 17:18
@pitdicker
Copy link
Collaborator Author

@djc What are your thoughts on making the jump?

@djc
Copy link
Member

djc commented Jun 19, 2023

I've reached out to the exonum maintainer in an issue. Let's give them a week to respond.

Copy link
Contributor

@jtmoon79 jtmoon79 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

The sometimes aliasing of chrono::duration::Duration as OldDuration can be changed in another PR.

@djc djc mentioned this pull request Aug 17, 2023
@pitdicker
Copy link
Collaborator Author

@djc How do you feel about putting out a release with this?

@djc
Copy link
Member

djc commented Aug 28, 2023

Given that we have so many changes on 0.4.x now, I feel uncomfortable putting this out into the same release as the other changes. Let's do another release for all the other stuff, wait a few days for feedback and then merge and release this.

@codecov
Copy link

codecov bot commented Aug 28, 2023

Codecov Report

Merging #1095 (0bcc389) into 0.4.x (f4aefc7) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##            0.4.x    #1095      +/-   ##
==========================================
+ Coverage   91.38%   91.40%   +0.01%     
==========================================
  Files          37       38       +1     
  Lines       16467    16933     +466     
==========================================
+ Hits        15049    15478     +429     
- Misses       1418     1455      +37     
Files Changed Coverage Δ
src/date.rs 35.86% <ø> (ø)
src/datetime/mod.rs 86.25% <ø> (ø)
src/datetime/tests.rs 96.41% <ø> (ø)
src/format/parsed.rs 96.81% <ø> (ø)
src/lib.rs 95.58% <ø> (ø)
src/naive/date.rs 96.34% <ø> (ø)
src/naive/datetime/mod.rs 97.71% <ø> (ø)
src/naive/datetime/tests.rs 98.65% <ø> (ø)
src/naive/time/mod.rs 96.50% <ø> (ø)
src/naive/time/tests.rs 98.35% <ø> (ø)
... and 3 more

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@pitdicker
Copy link
Collaborator Author

Given that we have so many changes on 0.4.x now, I feel uncomfortable putting this out into the same release as the other changes.

Can I do something to help prepare?

@pitdicker
Copy link
Collaborator Author

Made a list of changes since the last release: https://gist.github.com/pitdicker/e13d4295cca6d5c118b88d621ce1e2d8

@djc
Copy link
Member

djc commented Aug 28, 2023

Can you make that into a draft GitHub release, and make sure to call out external contributors (anyone not you or me) as we've done in previous release notes?

@pitdicker
Copy link
Collaborator Author

Can you make that into a draft GitHub release

I did not know that button 😄

@djc
Copy link
Member

djc commented Aug 29, 2023

Let's get #1145 and #1229 merged before we release.

@pitdicker
Copy link
Collaborator Author

Let's do another release for all the other stuff, wait a few days for feedback and then merge and release this.

Are we ready to merge? Not that I have been looking forward to it or something 😆

@djc
Copy link
Member

djc commented Sep 7, 2023

Yes, let's do it! Can you submit a version bump PR and draft release notes?

@detro
Copy link

detro commented Sep 7, 2023

I just want to say: thank you so much for taking the time to make this happen.

Sometimes OS development is less about "solving great problems in great way", and more about supporting your community and a bit of grinding.

Everyone appreciates this effort: I'm confident I can say this for all rust developers depending on chrono.

@djc
Copy link
Member

djc commented Sep 7, 2023

Well, we'll see how much hidden breakage comes out of the woodwork and/or how many people will complain that we're breaking the semver contract. Worst comes to worst, we may need to revert this change -- let's see how it goes.

@pitdicker pitdicker merged commit 8509da4 into chronotope:0.4.x Sep 7, 2023
37 checks passed
@pitdicker pitdicker deleted the remove_time_0.1 branch September 7, 2023 08:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants