Ghosting a language feature
Mike Parker
aldacron at gmail.com
Mon Sep 21 11:15:25 UTC 2020
On Monday, 21 September 2020 at 10:39:44 UTC, Walter Bright wrote:
>
> People may not come to D because it has eternal backwards
> compatibility, but some definitely leave because they got tired
> of constant breakage.
>
>
Our current release schedule, despite being divided into "major"
and "patch" releases, is just a string of incremental releases
every two months. There's nothing to differentiate one major
release from another -- it's all D2 -- and some may feel pressure
to update to the latest major compiler release as often as
possible, risking the headaches of breakage, regressions, and
with the remedy of only one patch release before it's time to do
it again.
This situation spawns discussions of D3, std.v2, and now this.
Watching what C++, and especially Java, are doing these days, I
feel like our approach is antiquated. What we need is an obvious
way to delineate the feature set of any version of both the
language and the standard library, and create a path that allows
for a more leisurely, less risky style of updates.
For example:
* A "milestone" release, say every one or two years, that
eliminates the 2.x versioning in favor of the year -- D21, D23,
etc.
* Every release between milestones is a patch release (21.1, 21.2)
* New language and library features are allowed only in milestone
releases
* Each milestone release is supported with patch releases for a
fixed number of milestone cycles, and bugfixes that can be
backported are backported to all supported versions.
* Features can only be deprecated in a milestone release, and are
removed in a specific milestone release down the road (3 cycles
or whatever).
With a schedule like this, there's no need for a D3, or a std.v2.
Ghosting doesn't need to be a thing. We can point specifically to
the distinct feature sets of D21 and D23 and D25, and Phobos
21/23/25. I can know that if I choose D21 for my project today, I
can keep using that specific version of the language, with patch
release support, until D27 (or whatever) is released. I don't
have to feel pressure to upgrade to D23, and I can wait until any
regressions it may have introduced are ironed out before I do
make the move.
It also allows us to start planning features more coherently (DIP
10xx has been approved and will be implemented for D25) so that
the feature set of each milestone release can be mapped out and
published on the site well before it's released.
My 2 cents.
More information about the Digitalmars-d
mailing list