-
-
Notifications
You must be signed in to change notification settings - Fork 227
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
[v1.40.0] Remove code deprecated in v1.30.0 #2924
base: master
Are you sure you want to change the base?
Conversation
BUILD FAILED Build statistics: statistics (-before, +after)
executable size=5259464 bin/dub
-rough build time=64s
+rough build time=4s Full build output
|
7ec0ac2
to
f8e9e32
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will definitely require a 2.0.0 version bump!
There are a few removals that would be quite annoying for anyone using the original API. In general, as a user, I absolutely hate this kind of light-hearted process for cleaning up/changing APIs that prioritizes minimal improvements on the library side over the constant need to follow these changes throughout the user base (Android, looking at you!). But in this case, we can probably assume that the number of API users is low enough that this is not an issue.
@@ -528,9 +528,3 @@ enum Flags!BuildOption inheritedBuildOptions = | |||
| BuildOption.ignoreDeprecations | BuildOption.deprecationWarnings | |||
| BuildOption.deprecationErrors | BuildOption.property | BuildOption.profileGC | |||
| BuildOption.pic; | |||
|
|||
deprecated("Use `Flags!BuildOption` instead") | |||
public alias BuildOptions = Flags!BuildOption; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the value of deprecating/removing something like this? IMO, it makes code easier to read and also keeps a door open for backwards compatible adjustments of the exact type (exactly like what was happening in the mentioned original commit).
So we don't follow standard D policy of 10 releases ? It feels odd to have a stronger policy than the compiler. I get your point, and it's the correct thing to do, I don't know if it's the right one though.
I get that point, and we've definitely been guilty of doing this a bit too much in D. In the case of Dub, there was a lot of exploration needed to narrow down the scope of what the tool was doing. My favorite example was turning Note that if we want to cut a v2.0 release, I can prepare that, but I would like some more changes in then. |
We can follow the same time line, just the version scheme is defined as SemVer and should be treated accordingly.
Yes, there is definitely a trade-off and many of the changes here are not problematic anyway.
Definitely makes sense to collect as many breaking changes as possible, as long as it doesn't add considerable amounts of additional development costs. I wouldn't necessarily treat this like you would treat a typical product version (i.e. the new shiny version two is out!), but simply as an incremental change that collects a bunch of breaking changes to avoid too frequent breakage. |
To me it doesn't really make sense though, as the release would not remove all the deprecated code, just some. So I'd rather delay things if that's the case (although removing overrides will simplify things quite a lot).
Another possible approach would be to start a v2 branch and rebase it from time to time until it's ready to be released. But since I'm the only person that would work on it, I can just keep it locally. |
The override system has been deprecated since v1.30.0 (52e3f86). It has now been 10 releases, and following the standard Dlang policy, we are clear to remove it.
This was deprecated in 051f7e1.
Those were introduced in a9a568d.
This was deprecated in fd844eb.
This was deprecated in b503a80.
This was deprecated in 1bafd57.
It was deprecated in 17ec6f9.
It was deprecated in 4f0a1a3.
They were deprecated in 7b5e24f.
It was deprecated in 11a8ac8.
This warning was added in 67a58e4 and the plan was to enable it in 10 releases (v1.40.0).
It was deprecated in da98e59.
It was deprecated in ea2ebbc.
It was deprecated in b65d9b8.
It was deprecated in 78573cc.
This was deprecated in 06ef374.
This was deprecated in bf13542.
This was deprecated in 9d5fd4f.
This was deprecated in a300f61.
This warning was introduced in a8aa234.
f8e9e32
to
6e5e4c9
Compare
Removing deprecated code means changing the API - I agree that the version should be bumped to 2. |
Release v1.30.0 was a massive release (337 commits).
The main changes were:
Dependency
was made a discriminated union and its various components were broken down;Once v1.39.0 is released, we can merge this PR and get rid of a lot of deprecated code, which will also massively simplify future work.