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

Bump num-family to v1.0? #421

Open
HEnquist opened this issue Oct 24, 2022 · 6 comments
Open

Bump num-family to v1.0? #421

HEnquist opened this issue Oct 24, 2022 · 6 comments

Comments

@HEnquist
Copy link

The num crates are very important to the entire rust ecosystem, and my experience from using them is that they are very mature. But they are all still at v0.x. Is there anything that prevents bumping them all to v1.0?

@cuviper
Copy link
Member

cuviper commented Oct 29, 2022

There's nothing much preventing that if we do it without changes, but there's not much benefit either, only perception. It would also cause a lot of churn in the ecosystem to get everyone to move, or else we'd need a semver-trick re-export to make the versions compatible.

@WalterSmuts
Copy link

WalterSmuts commented Oct 29, 2022

or else we'd need a semver-trick re-export to make the versions compatible.

So this option has no downsides?

@HEnquist
Copy link
Author

I was thinking of just bumping the versions to 1.0 and releasing without any other changes. This makes it clear that these crates are indeed stable and mature, and I think this is the main advantage. As a bonus, the versioning gets easier with the "proper" version numbers. The pre-1.0 versioning is a bit clunky IMO.

@Rudxain
Copy link

Rudxain commented Oct 31, 2022

So this option has no downsides?

Note

The following may be slightly wrong, because I don't have enough knowledge, and I'm sleepy

I guess the downside is that every single num* crate would need a separate temporary branch to host the code for the pre 1.0 version, this way both pre/post versions can be kept updated (pre, essentially being a backport). The "nice" thing is that these branches are quite simple because of the re-exports (we can use wildcards for convenience), so all modules and tests can be removed, leaving only lib.rs.

The bad thing is that any non-patch (semver) has to be manually omitted from the backport, to avoid violating semver. This requires turning wildcards into explicit pub use that enumerates every single identifier, except for the one that must remain unchanged (that one is solved by 📋copy-paste macros). The good thing is that we only need to do this once, because every other identifier "left behind" can be extracted manually without converting wildcards.

TLDR: it requires a lot of time and work at the beginning, and many "boilerplate branches" across repos

@Chris--B
Copy link

Chris--B commented Nov 7, 2022

but there's not much benefit either, only perception

I think you're underselling the benefit of perception. Seeing foundational crates across the ecosystem with "pre-release" versions paints a picture of a language that's immature and still changing. If num is still expecting churn, then sure, don't bump to 1.0. But if it's functionally stable and mature, I think there is real value in broadcasting that through the versioning scheme.

Updating sounds like it has one-time costs, but that's inevitable someday unless the plan is to never hit a 1.0... in which case I don't see much use in having versions to begin with.

@Chris--B
Copy link

The 500th day anniversary of this issue being opened is next week. We're still at version 0.4. If we had done a 1.0 bump in 2022, most of that ecosystem churn would have resolved by now.

What needs to happen for a 1.0 of the num family of crates?

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

No branches or pull requests

5 participants