D has become unbearable and it needs to stop
Petar
Petar
Fri Jun 9 10:59:35 UTC 2023
On Friday, 9 June 2023 at 09:22:10 UTC, GrimMaple wrote:
> On Friday, 9 June 2023 at 08:05:18 UTC, Walter Bright wrote:
>> It's not about not caring about it. It's just that I can't see
>> how it would be effective. Making LTS versions balkanizes the
>> language into multiple languages, which will play hell with
>> 3rd party library maintenance.
>
> I disagree with this statement, and I see a lot of people
> agreeing with my disagreement :)
> LTS is LTS for a reason, meaning that 3rdparty will (ideally)
> only target LTS, without having to target unpredictable
> compiler. [..]
What is your vision for LTS releases? How often would a new LTS
version be released and for how much time would it be supported?
How many LTS branches would be maintained in parallel? Something
like the Ubuntu release cycle -
https://ubuntu.com/about/release-cycle?
What is the range of supported versions that you would expect an
actively maintained D library to support? Only the oldest LTS, or
only newest one? What about the current versions?
What are the criteria for backporting changes to an LTS branch?
While library functionality removals and new compiler errors are
obviously a no-no, what about deprecations? On one hand, one
would would prefer things to keep working as they were, but on
the other hand deprecations are a migration tool - they let the
users know that they need to adjust their code in order to be
able to upgrade to a new version down the line.
There's also the question of certain bug fixes: usually druntime
& phobos are straightforward, but there are some compiler bug
fixes that can cause surprising regressions that are only
discovered years (!) later, despite the best effort of everyone.
I can assure you that this is not a theoretical concern - we've
had hundreds of regression-causing bug fixes like this. The main
cause is that the semantic processing part of the compiler
codebase is very complex and convoluted. While some argue that
the solution is ground-up from-scratch reimplemtnation (which is
what the SDC project that has been years in the making is trying
to accomplish), realistically, the most pragmatic option is to
continuously refactor the codebase until it becomes much easier
to maintain and evolve. Which is exactly what almost every major
compiler contributor has worked towards on many occasions, but
the reality is that we're still far from the place we want to be,
and there's much more work to be done.
I don't expect the rate of change to decrease, (and I surely hope
it doesn't as it means the development is dying!), so I would
expect the divergence between the LTS release and the current one
to constantly increase, both in terms of direct user-observable
language changes, but also in terms of the codebase. There are
many cases where in order to fix a bug you first need to refactor
the code (so e.g. the logic is centralized in a single place and
not spread across multiple files), which would make certain
commits very difficult to apply to the LTS branch.
And even just in terms of user-facing changes, if the jump from
LTS to the current release is too big, upgrading would become
much more time consuming than the current status quo of a major
release every two months, so in that sense, I would agree with
Walter that this has the risk of splitting the community.
> I don't understand how this is going to be worse for 3rd party,
> I only see wins.
While the past few releases may have been heavier on the
deprecation side of things, once there's a new compiler release
with shiny new feature X™, you're quite likely to get an influx
of users requesting support for it, so sticking with an old
compiler release is unlikely make everyone happy.
More information about the Digitalmars-d
mailing list