digitalmars.D - Planning Update June 23 & 30 -- Bugzilla to GitHub; Deprecations
- Mike Parker (36/36) Jul 04 2023 I'm able to report on a couple of decisions that we reached over
- user456 (8/28) Jul 04 2023 There's a TZ problem here. The first PRs were submited before
- FeepingCreature (13/35) Jul 04 2023 I mean, only a slight step beyond that is "this feature is the
- Mike Parker (5/17) Jul 04 2023 You can add it in the CI repository, like so:
- Nick Treleaven (9/17) Jul 05 2023 Thanks, me too. For that there was a simple migration path. I
- ryuukk_ (14/22) Jul 04 2023 100% agree, deprecation and breaking changes are needed to
- IGotD- (13/20) Jul 05 2023 You can really do weird stuff with alias this and people took
I'm able to report on a couple of decisions that we reached over the past two planning meetings. The update on this is likely to result in quite a bit of discussion, so I've [put it in a separate thread](https://forum.dlang.org/post/kttzxwbbvdpzxlmoyvyo forum.dlang.org). Deprecating `alias this` in classes was a mistake. Walter proposed that we revert it, and everyone got on board. We also agreed with Walter's proposal to review other recent deprecations to determine if they were inappropriate or have caused unintended problems and, if so, examine if they can be reverted without causing new problems. Going forward, we're going to take a much more conservative stance on deprecations: * nothing should be deprecated unless there's a very compelling reason ("this feature was a mistake and people shouldn't be using it" is not a compelling reason) * every deprecation should have a clear path for migration, automated if possible * the person implementing a deprecation will be responsible for updating projects that trigger it in our BuildKite tests Down the road, we'll need to decide on a better path for evolving the language. Atila thinks "editions" or "epochs" are the way to go, as he has mentioned in a couple of DConf talks. But that's for a future discussion. For now, we're still focused on stabilization. We've got a quarterly meeting with industry reps on July 7. Reps from Ahrefs and Decard will be joining us for the first time. Our next monthly meeting is happening on July 14th. Or next planning session is slotted for July 21st. I'll have the summary for the June monthly meeting finished in a few days. You can usually see the bigger tasks I'm currently working on in the [Strengthen the Community project](https://github.com/orgs/dlang/projects/24/views/1?layout=board) on our GitHub projects page. I try to keep the notes on each in-progress task up to date.
Jul 04 2023
On Tuesday, 4 July 2023 at 11:08:02 UTC, Mike Parker wrote:I'm able to report on a couple of decisions that we reached [...] * nothing should be deprecated unless there's a very compelling reason ("this feature was a mistake and people shouldn't be using it" is not a compelling reason) * every deprecation should have a clear path for migration, automated if possibleThere's a TZ problem here. The first PRs were submited before your annoucement and lead to confusion: e.g https://github.com/dlang/dmd/pull/15379#issuecomment-1619628624 or quote from IRC[08:56] * DFeed [GitHub] Walter‎Bright opened dmd pull request https://github.com/dlang/dmd/pull/15380 [08:57] <Herringway> oh no what is walter doing now [09:02] <Herringway> did I waste my time keeping up with deprecations...? [09:05] <-- opticron (~opticron 136.53.58.220) a quitté ce serveur (Server closed connection). [09:06] --> opticron (~opticron 136.53.58.220) a rejoint ce canal. [09:13] <opDispatch> yeah, earlier I was about to drop a comment about the tooling but actually dparse still supports body apparentlyso... for a few hours people thought it was a Walter's fad and not a well defined direction.
Jul 04 2023
On Tuesday, 4 July 2023 at 11:08:02 UTC, Mike Parker wrote:I'm able to report on a couple of decisions that we reached over the past two planning meetings. The update on this is likely to result in quite a bit of discussion, so I've [put it in a separate thread](https://forum.dlang.org/post/kttzxwbbvdpzxlmoyvyo forum.dlang.org). Deprecating `alias this` in classes was a mistake. Walter proposed that we revert it, and everyone got on board. We also agreed with Walter's proposal to review other recent deprecations to determine if they were inappropriate or have caused unintended problems and, if so, examine if they can be reverted without causing new problems. Going forward, we're going to take a much more conservative stance on deprecations: * nothing should be deprecated unless there's a very compelling reason ("this feature was a mistake and people shouldn't be using it" is not a compelling reason)I mean, only a slight step beyond that is "this feature is the cause of people creating bugs." What *is* a compelling reason? For instance, I got `alias Nullable.get this` deprecated and later removed. I'm extremely glad that source of bugs is gone and would be upset if it was reverted. What about things that are straight up bugs that contradict the spec? For instance, you used to be able to access a private function if it was overloaded with a public function that came after. Should we write *that* in the spec? Or should we just silently do the wrong thing? (I don't agree with this policy, you can probably tell. :P)* every deprecation should have a clear path for migration, automated if possible * the person implementing a deprecation will be responsible for updating projects that trigger it in our BuildKite testsApropos, how do I get projects in the Buildkite suite?
Jul 04 2023
On Tuesday, 4 July 2023 at 13:25:06 UTC, FeepingCreature wrote:I mean, only a slight step beyond that is "this feature is the cause of people creating bugs." What *is* a compelling reason? For instance, I got `alias Nullable.get this` deprecated and later removed. I'm extremely glad that source of bugs is gone and would be upset if it was reverted. What about things that are straight up bugs that contradict the spec? For instance, you used to be able to access a private function if it was overloaded with a public function that came after. Should we write *that* in the spec? Or should we just silently do the wrong thing? (I don't agree with this policy, you can probably tell. :P)I can't speculate. It will have to be on a case-by-case basis.Apropos, how do I get projects in the Buildkite suite?You can add it in the CI repository, like so: https://github.com/dlang/ci/commit/05df6423c2a78a4e410030b793e1e31e7ab1ed73 Or submit an issue for it there, or ask Razvan or Dennis.
Jul 04 2023
On Tuesday, 4 July 2023 at 13:25:06 UTC, FeepingCreature wrote:For instance, I got `alias Nullable.get this` deprecated and later removed. I'm extremely glad that source of bugs is gone and would be upset if it was reverted.Thanks, me too. For that there was a simple migration path. I think the level of breakage has to be outweighed by the benefits of the change. Accidental bugs can be much more costly than having to add `.get` in a few places.What about things that are straight up bugs that contradict the spec? For instance, you used to be able to access a private function if it was overloaded with a public function that came after. Should we write *that* in the spec? Or should we just silently do the wrong thing?For that example, it seems clear the user's code was at fault if it relied on accessing a private function. Though occasionally the spec may be wrong in some aspect - the solution may depend on how people understand the feature to work.
Jul 05 2023
On Tuesday, 4 July 2023 at 11:08:02 UTC, Mike Parker wrote:* nothing should be deprecated unless there's a very compelling reason ("this feature was a mistake and people shouldn't be using it" is not a compelling reason) * every deprecation should have a clear path for migration, automated if possible * the person implementing a deprecation will be responsible for updating projects that trigger it in our BuildKite tests100% agree, deprecation and breaking changes are needed to cleanup past mistakes, but proper migration path should ALWAYS be included to avoid that kind of issues Also, for the love of god https://github.com/dlang/dub/issues/2617 - "Get rid of deprecate warnings" https://github.com/dlang-community/DCD/issues/722 - "Get rid of deprecate warnings" I got ignored months ago for asking to clean up and fix ton of deprecation warnings This should NEVER happen on projects that are hosted on official repos If the head is careless, how do you expect everyone else to care?
Jul 04 2023
On Tuesday, 4 July 2023 at 11:08:02 UTC, Mike Parker wrote:Deprecating `alias this` in classes was a mistake. Walter proposed that we revert it, and everyone got on board. We also agreed with Walter's proposal to review other recent deprecations to determine if they were inappropriate or have caused unintended problems and, if so, examine if they can be reverted without causing new problems.You can really do weird stuff with alias this and people took advantage of it. Removing it would also remove the possibility to do these tricks without any alternative. Removing alias is a typical D3 thing to consider. The whole deal with alias this and mixin composition should be reviewed and improved for D3. While mixin templates works fine, I'm not that keen on the syntax as it forces you to make a mixin template rather than a struct and a struct is better because you can reuse it in a number of different ways. alias this is such an entrenched and iconic D feature now, I would almost go the other way, also use it for composition for syntax cohesiveness.
Jul 05 2023