-
Notifications
You must be signed in to change notification settings - Fork 419
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
Update information on supported Ruby versions #951
Conversation
2b995aa
to
02b0fd2
Compare
In general, the Assuming the gem actually does require Ruby 2.4, this looks mostly good to me. Ruby 2.4 minimum version is what we are targeting in Rack 3 (for |
Aren't these the same thing? If we aren't running a Ruby version in CI then I don't know if the gem will run on it or not. |
If you don't know, be optimistic, not pessimistic, and leave the required version at 1.9.3. If you get a report that it doesn't work on an unsupported version, then bump required_ruby_version at that point. required_ruby_version should indicate you are 100% sure the gem doesn't work in earlier versions, because of the Ruby features it uses. If you want, I can test CI for you on earlier Ruby versions (GitHub CI supports back to 1.9.3) to tell you when it actually fails. |
0f121cb
to
018c6fc
Compare
Looks like it is safe to set required_ruby_version to 2.2. Personally, I would keep CI with 2.2, and if you only want to support 2.4+, start using Ruby 2.4 features, see CI fail with them, then drop the failing versions from CI and bump required_ruby_version. |
I agree with most of what you said except this part, I think it's important and valuable to set IMHO 2.4 is reasonable. I think a key method we need for concurrent-ruby is |
The simplest fix here is to CI test the older version even if not officially supported. As soon as CI fails for the older version, drop it from CI and bump required_ruby_version. I'm not advocating supporting older rubies indefinitely. I'm advocating for setting required_ruby_version correctly, as in, required_ruby_version states which Ruby version is actually required to run the library. It's perfectly fine to me to drop support for older Ruby versions and bump required_ruby_version as soon as you are using the features in the newer Ruby version. Don't let older Ruby versions hold you back, feel free to use features from newer Ruby versions. However, if your gem will run on older Ruby versions, don't artificially restrict users of those Ruby versions from using the library. required_ruby_version should not be a barrier, it should be a guardrail, only preventing users from wasting their time when you know the library will not work.
2.2 works just fine in CI. If you commit something that works on 2.4/2.5 and breaks on 2.2 in CI, bump required_ruby_version and drop that Ruby version from CI.
CI currently fails for Ruby <2.2, so it looks like 2.2 is already required, at least to run the tests. |
I think I will leave 2.2 and above running in CI, and mark the gem as supporting 2.2 and above, as that is the factual reality. Can re-address in a major release. |
Agreed.
IMHO no need for a major release, that's the point: |
One argument for requiring 2.3 minimum is Thread#{name,name=} support. |
We will require Ruby 2.3 in the next release: #975 |
Let's commit to 2.4.10 as a minimum.
That lets us run on:
That's what we're actually testing in practice, so what we can genuinely claim. It's two major versions of unmaintained.
I'll say we support latest JRuby and TruffleRuby, which seems to be the case in practice based on what's being test. We should maybe add more JRuby versions to CI and keep supporting a few old versions. @headius for any opinion.
I'll leave the Rubinius code in for now, because I don't want to rip out quite a lot of code in this release, but I've warned off that it will likely go in the future.
@jeremyevans