Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign uprelease regex 1.0 (May 1, 2018) #457
Comments
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Mar 13, 2018
BurntSushi
added a commit
that referenced
this issue
Mar 14, 2018
This comment has been minimized.
This comment has been minimized.
jethrogb
commented
Mar 14, 2018
•
I'd advocate against this. Requiring a newer Rust version should be considered a breaking change. Discussion on this topic rust-lang-nursery/api-guidelines#123 |
This comment has been minimized.
This comment has been minimized.
|
@jethrogb It's a compromise. The topic has been discussed to death. I frankly don't have the energy to continue discussing it. |
This comment has been minimized.
This comment has been minimized.
|
My thoughts on the matter are here: rust-lang-nursery/api-guidelines#123 (comment) |
This comment has been minimized.
This comment has been minimized.
Let me rephrase this, because I do want to discuss it if there are things that I've missed or haven't thought about deeply. In particular, I would appreciate if further discussion built off of my thoughts here. If I'm missing something, then let's talk about it, but let's please try to avoid rehashing things. |
BurntSushi
changed the title
release regex 1.0
release regex 1.0 (May 1, 2018)
Mar 14, 2018
This comment has been minimized.
This comment has been minimized.
jethrogb
commented
Mar 14, 2018
|
My hope is that a community-wide decision on the matter can be reached (possibly as a part of the API guidelines initiative) before committing to a particular strategy just for this crate. |
This comment has been minimized.
This comment has been minimized.
|
I don't see how that's going to happen. Did you read my comment that I linked? The regex crate will not be the first to adopt this policy. |
This comment has been minimized.
This comment has been minimized.
WiSaGaN
commented
Mar 14, 2018
•
@jethrogb in that case, you can just pin to the minor version, which still allows updates of bugfix without upgrading your compiler. |
This comment has been minimized.
This comment has been minimized.
jethrogb
commented
Mar 14, 2018
•
|
@BurntSushi but it will be (I think) the first crate under the rust-lang umbrella to adopt that policy, no? @WiSaGaN Not if you have dependencies that silently update their dependency version requirements (which should be ok because they're semver compatible)! See the linked thread for additional discussion. |
This comment has been minimized.
This comment has been minimized.
WiSaGaN
commented
Mar 15, 2018
|
@jethrogb If the dependency crates' owners decides to upgrade to As long as |
This comment has been minimized.
This comment has been minimized.
jethrogb
commented
Mar 15, 2018
@WiSaGaN Yes. The point of semver is to not have to meticulously read each dependency's "compatibility policy" because it's spelled out in semver. |
This comment has been minimized.
This comment has been minimized.
|
This conversation is frustrating. Semver does not spell out anything other than a high level interpretation of version numbers. There is already broad precedence in the Rust ecosystem that certain types of technically backwards incompatible changes aren't actually backwards incompatible when reasoning about semver. Moreover, the assumption that bumping the minimum Rust version is even a semver incompatible changed is contested, and acting like it isn't is not productive. I will stress this again: let's please table this discussion unless you have something new to add. @jethrogb Your distaste has been acknowledged. I don't find any of your arguments compelling because they don't bring anything new to the table. My plan at the moment is to continue as planned, and if that in practice causes problems in the ecosystem, then we can re-evaluate that policy. |
This comment has been minimized.
This comment has been minimized.
jethrogb
commented
Mar 15, 2018
•
|
@BurntSushi Sorry, it wasn't my intention to have this discussion in this thread all over again. I'm fine with having the discussion in rust-lang-nursery/api-guidelines#123 and I suggest @WiSaGaN express their arguments over there is well. My main gripe is with a crate under the rust-lang umbrella (this crate) unilaterally defining what the policy is before consensus is achieved/a decision is made in that issue. |
This comment has been minimized.
This comment has been minimized.
OK, well, if you want to take that angle, then my proposal is far more conservative than what we currently do, at least for the nursery crates anyway. The nursery crates have bumped the minimum Rust version required to compile the crate in semver compatible releases quite a bit (some have even done so recently, albeit with good reason). The only official policy I'm aware of is that rust-lang crates must support at least stable minus 2 releases back, which is compatible with my proposal. |
This comment has been minimized.
This comment has been minimized.
|
@WiSaGaN As @jethrogb suggested, please take this discussion to rust-lang-nursery/api-guidelines#123 In particular, please carefully read my comment on that thread, which points out problems with constraints like |
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
BurntSushi
added a commit
to BurntSushi/regex
that referenced
this issue
Apr 28, 2018
This comment has been minimized.
This comment has been minimized.
|
For anyone following along at home, I've opened #471 that implements the above changes to bring us to 1.0. Unless something comes up, my plan is to release this on Tuesday (May 1). |
BurntSushi commentedMar 13, 2018
•
edited
I think the
0.2release has baked long enough. I propose thatregex 1.0be released on May 1, 2018.Here are the key breaking changes (all supremely minor) I'd like to make:
1.x.y) should never increase the minimum Rust version required to compileregex, but that new minor version releases (1.x) may increase the minimum Rust version required to compileregex.Regex::new(r"\1").unwrap().is_match("\u{1}")evaluates totrue. Instead, I'd like it to emit an error that backreferences are not supported. We will provide a method onRegexBuilderto opt into the old syntax with octal escape sequences supported.(?-u:\B)from use inRegex::new, since it is permitted to match invalid UTF-8 boundaries. We, of course, continue to allow it forbytes::Regex::new.(?-u:\b)remains legal inRegex::new, since it cannot match invalid UTF-8 boundaries.impl From<regex_syntax::Error> for regex::Errordefinition. The fact that this exists was an oversight, and it actually causesregex-syntaxto be a public dependency ofregex, which we very much do not want to happen.core/alloc-only use cases. To make this happen, we'll need to gate things on astdfeature that is enabled by default. We need to add this feature in 1.0 and gate the entire crate on it. If we didn't, and added this gate in the future, then existing uses ofdefault-features = falsewould likely break, which would be a breaking change.