June 19, 2023
On Monday, 19 June 2023 at 14:23:18 UTC, Martyn wrote:

> While some people may think this is a case of simply creating an LTS branch and... boom.. job done. It wont be as simple as that.

It actually is that simple. This is how the discussion is proceeding:

"There are too many compiler releases. It makes it hard to share libraries with others."

"Simple solution - have fewer compiler releases."

"We can only do that if someone's going to port bug fixes back to all previous releases of the compiler."

"Why? We're not doing that now?"

[Crickets chirping]

This problem has a simple solution. Fewer compiler releases. I'm all for bug fixes, but it has nothing to do with reducing the frequency of compiler releases. If bug fixes are that important, we'd already be doing it.

June 20, 2023
On Sunday, 18 June 2023 at 17:49:38 UTC, Walter Bright wrote:
> On 6/17/2023 5:14 AM, monkyyy wrote:
>> All you need to say is "d version 99 is the lts for the next 3 year" or maybe a formal blog post by 5ish people.
>
> Somebody needs to step up and pull fixes into it.

>> Coordination is not when everyone speaks.

Coordination is not when everyone speaks.

Your specifically the dictator for life, maybe md could write a formal blog post but there's a handful of voices that are "loud". An lts is a schelling point. It *can be* someone going out of their way to provide bug fixes and that is what makes it coordinated but it could also be like python 2 where the community just didn't upgrade for years.

If grim fixes a bug for version 2.87 and adr is trying to make something work on a d1 compiler and mir-whatevers maintains tests if their code works on 2.95; there no LTS there a bunch of people trying to fix their local problem, there's a (very very) wasteful coordination mechanisms for people without leaders such as what happens between fireflies. But, these take many cycles of messages and when those messages are headache-inducing bug fixes in ancient code the coordination may not happen before people leave.

If you say version 2.99 is the lts, and then store up a bunch of breaking changes for 2.125 then declare 2.124 the new lts. That may just work *without any extra bug fixes*, depending on how strongly the community trusts that message.Maybe grim ignores a bug report about 2.87 compiler, maybe mir tests upgrades its test suite to be 2.99 and maybe, just maybe, adr stops talking about the great d1 compile speeds and their actions may overlap better. Not likely, but it should be considered if you consider dlang gui important.
June 23, 2023
On Monday, 19 June 2023 at 17:55:40 UTC, bachmeier wrote:
> This problem has a simple solution. Fewer compiler releases. I'm all for bug fixes, but it has nothing to do with reducing the frequency of compiler releases. If bug fixes are that important, we'd already be doing it.

No, I don't think solution is to significantly delay features on a rapidly developed language. Features draw new users in, and keep people remembering and thinking about a new language. "I wonder what cool thing I can do with this new feature"

I think a simple solution is mark all non-LTS releases as "beta", as in "buyer beware if you use these", and have an LTS release every 2/3/4 years. Having to update your codebase every say, "four years", isn't the end of the world if you know it's coming.

If anyone is using the "beta"/"unstable" branch (or whatever you want to call it), it's immediately on them "You should have anticipated this could happen" if something breaks compatibility as the language evolves. At least, it's in the language users mind that it "could" happen and lessens the mental blow when it _does_ happen. A kind of consenting to instability.

I would suggest two "branches". The latest LTS, and beta. You want reliability plus bugfixes, use the LTS. You want new features, use the beta. Expecting a small community to maintain more than two versions is unrealistic, and a nightmare for library developers.

As for removing features, I don't think that's been sufficiently addressed. (Unless I missed the relevant discussion somehow.) Removing features (without so much as a press release/blog post) is a very dangerous precedent that forces users to think "Will my next used feature be removed? Should I migrate to a new more stable language?".
June 30, 2023

Putting in my 2 cents. I used to work as a professional D developer, made a living off of it for a year or two, and then became quickly disillusioned with it. Hell - DMD has not worked for me on aarch64 macOS for the past 6 months, even after updating to the latest version of both macOS / DMD available due to some obscure linker error that I sincerely cannot be assed to dig into. It just doesn't work, so I've just avoided writing D like the plague (or just use ldc, which has always worked!).

In my eyes, D is like the perfect embodiment of "move fast, and break things", but sans the "you need to fix those things at some point after you break them", and like OP mentioned, so incredibly frustrating to deal with.

I tried. I genuinely did. But there are so many rough edges, as well as a complete reluctance to try New Ideas That Are Proven To Work Elsewhere. Because we have to do it the D way -- whatever the hell that means.

I'm personal friends with a few engineers at Facebook, and learned the reason why Facebook dropped D. I mean, hell, there was huge internal hype about it there, as well as major investment in the language; it was seen as the replacement to C++ and was paraded around as the Next Great Thing (TM). Hell - they even hired on Andrei & Walter, as well integrated it fully into Buck (Facebook's internal build tool). You know what happened? Facebook engineers ran into so many headaches and issues with D that they chose to drop it entirely, and in its place came a language that you might've heard of: Rust. Need proof? Look at what languages are implemented in Buck2 - you'll notice that there's a stark lack of D anywhere.

I'm genuinely shocked that D is still used in production anywhere. It feels like you need to take the Symmetry approach of writing your own standard library (and be incredibly selective about which features you use - e.g. the majority of Mir is written with @safe @pure @nogc, which made it an absolute joy to work with) just to even be able to use it in a remotely productive way. And even then, you start to run into some serious rough edges with dmd and work around compiler issues all the time.

This doesn't even get into my criticisms of the language itself. The level of compiler metaprogramming that D encourages its users to use has so many footguns, combined with a compiler that has so many incredibly bizarre design decisions (seriously, DMD has caused me to OOM my entire system on multiple occasions) that I've become incredibly incredibly skeptical that it was a good idea to begin with.

Now I write Rust professionally and don't have any of these pains. I have new pains, of course, but at least my "new pains" are addressed by the community / language maintainers in a reasonable timeframe, whereas some of the compiler bugs I've reported have gone unseen unless I made an absolute fuss about it on the Discord. I don't have to worry about my crates magically breaking if I update the compiler. I don't need to worry about my code randomly getting slower to compile if I update the compiler. I can use every part of the standard library and not have to worry about (x) or (y) - unlike tar pits like std.regex, or std.string. Sure, the cognitive load is higher since I now need to worry about ownership / borrowing, and I sometimes need to fight the borrow checker, but in return I get a language that is incredibly reliable & ergonomic to use.

I wish you all well, and I wish D could've worked out. I really wanted to like the language. There are so many great lessons that can be learned from D. But viewed holistically, I cannot recommend any new developers to write any code in D.

July 01, 2023
Are you seeing warnings about alignment?

Its a known issue that has been fixed in LDC but DMD still needs the workaround.

https://forum.dlang.org/post/upczlsrzcpxgalgjyvvp@forum.dlang.org
June 30, 2023
On Friday, 30 June 2023 at 18:09:45 UTC, Richard (Rikki) Andrew Cattermole wrote:
> Are you seeing warnings about alignment?
>
> Its a known issue that has been fixed in LDC but DMD still needs the workaround.
>
> https://forum.dlang.org/post/upczlsrzcpxgalgjyvvp@forum.dlang.org

That's the one! Crazy that an issue that we've known about since November 4th, 2021 *still* hasn't been fixed in the "flagship" compiler. Oh well.
July 01, 2023
On 01/07/2023 6:15 AM, Z3Solver wrote:
> That's the one! Crazy that an issue that we've known about since November 4th, 2021 /still/ hasn't been fixed in the "flagship" compiler. Oh well.

Reference compiler, not flag ship which is a bit different.

Yeah we don't generally recommend dmd these days. Its good if you're on x86 and want fast builds, but is not so good at performance or correctness type of stuff.

Eventually dmd will drop support for OSX, once Apple drops the x86 support. So if you want to drop support for dmd and be happy about it, I'd recommend it.

But for reference, there have been a lot of governance changes in the last 10 years. Its well worth talking about the problems that you are having including going to one of the industry meetings.
July 02, 2023

On Friday, 30 June 2023 at 17:55:38 UTC, Z3Solver wrote:

>

It feels like you need to take the Symmetry approach of writing your own standard library (and be incredibly selective about which features you use - e.g. the majority of Mir is written with @safe @pure @nogc, which made it an absolute joy to work with) just to even be able to use it in a remotely productive way.

This is a misunderstanding. The standard library whose core Symmetry based on Phobos is for the internal Symmetry Integration Languge, SIL. D code in Symmetry still uses Phobos as-is. Sure, we sometimes copy-paste a function out of it to modify it slightly, and sometimes use third-party (or internal) libraries when we're unsatisfied with what Phobos offers, but std is still widely used.

Also, at least my experience is that the list of D features to not use at Symmetry are stylistic choices. There's no general ban on technological D features like the garbage collector, @system code or global variables (although of course we prefer to avoid the latter two when other things are equal, like any good D programmer).

July 02, 2023
On 6/30/2023 10:55 AM, Z3Solver wrote:
> I tried. I genuinely did. But there are so many rough edges, as well as a complete reluctance to try New Ideas That Are Proven To Work Elsewhere.
I appreciate you spending the time to post here.

I have some frustrations, too - how can we focus just on bug fixes while implementing new features at the same time?

The other frustration I have is I never heard any feedback from Facebook, and
I would like to work on the problems you're experiencing, but it would be nice to have a specific list.
July 03, 2023

On Sunday, 2 July 2023 at 18:18:35 UTC, Dukc wrote:

>

On Friday, 30 June 2023 at 17:55:38 UTC, Z3Solver wrote:

>

It feels like you need to take the Symmetry approach of writing your own standard library (and be incredibly selective about which features you use - e.g. the majority of Mir is written with @safe @pure @nogc, which made it an absolute joy to work with) just to even be able to use it in a remotely productive way.

This is a misunderstanding. The standard library whose core Symmetry based on Phobos is for the internal Symmetry Integration Languge, SIL. D code in Symmetry still uses Phobos as-is. Sure, we sometimes copy-paste a function out of it to modify it slightly, and sometimes use third-party (or internal) libraries when we're unsatisfied with what Phobos offers, but std is still widely used.

Also, at least my experience is that the list of D features to not use at Symmetry are stylistic choices. There's no general ban on technological D features like the garbage collector, @system code or global variables (although of course we prefer to avoid the latter two when other things are equal, like any good D programmer).

Funkwerk, same here. Widespread use of the standard library except when we need to fork something to fix a bug or design issue (grrr Rebindable grrr). We try to minimize GC load via various means (ranges, structs, stream decoding), but we wouldn't forbid it outright - that would make the code far too painful to contemplate. And it is useful.