Having "blessed" 3rd party libraries may make D more popular and stable for building real software.

WraithGlade wraithglade at protonmail.com
Tue Jul 1 18:06:28 UTC 2025


On Tuesday, 1 July 2025 at 05:47:47 UTC, monkyyy wrote:
> ...
>
> come to opend, upstream is barely interested in making the std 
> have new uses instead they want to add "safety" "features" you 
> will be told dub is perfect and everything you could every want 
> in an npm clone and the community barely realizes how to run 
> the compiler at all.
>
> You wont win this fight, it will be smashing your head into a 
> brick wall.

It is great that the Open D fork exists and is more open to 
change and refinement and I am interested in the future of the 
project and I think it increases the D language's chances of 
long-term survival.

I am unfortunately however still very much a D newbie though and 
thus I am very reluctant to depart from the mainline D ecosystem 
considering that even less library support and information will 
be available for Open D in all likelihood. I want to make real 
projects for redistribution to end-users.

As such, mainline D (DMD, GDC, and LDC) seems like a much wiser 
choice for an inexperienced user like me, even though I'll have 
to work around language limitations sometimes. I may try Open D 
later on though, depending on how things pan out with any 
projects I try and/or with mainline D's upcoming choices.


On Tuesday, 1 July 2025 at 06:31:58 UTC, Serg Gini wrote:
> ...
>
> D is not
> It is just small club of chill tinkerers.
>
> ...

Languages that don't sustain a large enough user base become at 
large risk of evaporating and becoming unusable in the future.

Tinkering is only an even remotely pleasant process when there is 
still a large enough library and community ecosystem to sustain 
sufficient tooling for such.

By analogy, all of computer technology itself is only even 
possible because of massive networks of interlocking human 
cooperation and engineering and massive compatibility efforts. No 
individual hobbyist could sustain the infrastructure to make 
computers even possible to obtain without that network of 
support. Much the same can be said of software.

Likewise, things like programming languages just as much must 
sustain sufficient scale or they too will become unusable over 
time even for hobbyists and tinkerers.

D's library ecosystem and community is currently *sufficient* but 
also flawed and somewhat *endangered* and is showing some cracks 
from insufficient scale. Other competing newly arisen systems 
programming languages (e.g. Zig and V) have grown *very quickly* 
despite being less capable than D.

There are surely reasons for that, such as perhaps especially the 
library ecosystem stability problems I've read about on the 
internet and shortcomings in clear communication and also of 
course GC being not very desirable for real-time systems.

Those problems could be improved by taking a much more serious 
stance regarding the critical importance of having very strong 
libraries if a programming language seeks widespread real use, 
among other things of course.

(Also, tangentially: deterministic reference counting like C++ 
smart objects, reliably controlled by destructors based on 
scopes, would be better than any unpredictable non-deterministic 
GC and still obviate the need for complicated memory logic such 
as Rust suffers from and would still be on par with what modern 
C++ performance is like, especially since structures on the stack 
or in pools wouldn't need allocated dynamically as such at all. I 
am not sure why so many languages don't realize that 
deterministic reference counting is a great middle ground between 
the two extremes of GC and non-GC approaches.)


On Tuesday, 1 July 2025 at 09:59:46 UTC, Kapendev wrote:
> ...
>
> I think having an official "vendor" library collection tied to 
> the language is a bad idea. Sure, it feels nice to just `import 
> raylib`, but it couples library updates to language versions, 
> making it harder to get new features or fixes without upgrading 
> the entire language. It also limits what the libraries can do. 
> "Official" libraries have to stick to a common standard, which 
> prevents them from offering extra features or even 
> documentation. It's easy to not think about these things, but 
> they are important. Independent projects can do that much 
> better. A curated list like awesome-d is a better solution and 
> has worked for so many languages until now. It can highlight 
> great libraries without tying them to the language.
>
> Anyway, 
> [awesome-d](https://github.com/dlang-community/awesome-d) is 
> awesome!

Awesome D is a good list and is where I found what D libraries 
where available to try, but it did *little to nothing* to change 
the fact that many of the linked libraries have poor installation 
instructions that could be automated (and automation is largely 
the whole point of programming... which makes that ironic) and 
questionable viability for real software production.

Even besides many of such libraries seemingly not working at all 
even for basic examples without having in-depth knowledge of how 
to set things up that new users to D could never be expected know 
in advance (akin to a "chicken and egg" problem), the existence 
of such lists does not do much to assure stability of the 
ecosystem in light of the fact that the "standard" for what is 
needed for a programming language has expanded greatly beyond 
what was considered a sufficient range of built-in abilities for 
languages in the 1970s and such. The world has changed a lot 
since then, but many people's mindsets haven't kept pace.

**Library ecosystem health remains one of the most dominant 
factors in language viability, if not literally the most dominant 
factor in reality**. Many of the most popular language survive 
basically entirely based on that criteria even despite being far 
worse in core language design and thus not acknowledging that 
reality and planning strategically accordingly is a recipe for 
greatly reduced uptake and survivability.

Also, importantly, **there is nothing that says that "blessed" or 
"vendor" libraries have to stay in lockstep with the language's 
standard library**. That is a complete *non-sequitur* and is 
unrelated to anything I said. Partial official support (i.e. just 
routinely making sure at least one multimedia library is as easy 
to use and polished as possible) is not the same thing as being 
tied to the hip to the language core and standard library.

**Nothing about my suggestion in any way ties any library to the 
core language or standard library.** Nothing about it limits what 
it can do nor impedes documentation in any way either and indeed 
rather it in reality *encourages* better documentation by forcing 
D to ensure a proper API and integration of whichever 
"blessed"/"vendor" library(s) it chooses. Streamlining a library 
experience also inherently means it needs fantastic documentation 
written with high user empathy and care. Poorly documented or 
undocumented features might as well not exist from the standpoint 
of average users.

The criticisms you bring up are all just conflations of unrelated 
things, basically.

It reminds my of how over a decade ago I remember someone on a 
C++ forum argued that nestable comments were *impossible* to ever 
implement because they allegedly weren't logically consistent, 
but in reality that was a conflation and of course has no basis 
in 1st principles based thinking but rather was tied to 
preexisting ways of doing things that were left subconsciously 
unquestioned.

In that regard: An in-between status between official language 
facilities and 3rd party libraries is *not* merely a synonym for 
official language facilities and thus does not have the same 
characteristics. Indeed that is the entire point of why it is an 
*in-between* and *semi-standard* status and not part of the 
standard library itself and is why I made sure to describe it 
that way for clarity.

Multiple independent libraries can be officially maintained 
separately. As long as such libraries never change the core 
language itself then there is never a reason they would ever have 
to stay in lockstep.

--------

More broadly speaking though (addressing everyone now), I think 
historically (from what I can guess from browsing D's forums off 
and on over time) the speed and frequency of dismissiveness and 
negativity and lack of imagination on these forums seems likely 
to have probably played a role in D's historical stagnation that 
have held it back despite D having years of ample opportunity to 
carve more of a space for itself. It is still a great language 
anyway, but the point still stands.

I also wanted to mention that I think the following are 
strategically wise for D:

- competing better with Rust (the core D team's exploration of 
safety in this regard actually seems like a smart move in light 
of the new emphasis on safety in the industry)
- improving the library ecosystem, especially those packages 
essential for real world software such as immediate mode 
multimedia libraries (such as SDL or Raylib or Sokol) and 
retained mode GUI libraries (such as Qt and wxWidgets etc or 
similar) seems likely to help too
- better communication and "advertising" of the language to get 
the word out

Long-term though I think the C family of languages main real 
advantage is native-level performance and it will only be a 
matter of time before a non-C family language with better syntax 
(such as mixfix syntax and concatenative semantics in my personal 
theory) eventually displaces the C family from their dominance of 
the most popular languages.


More information about the dip.ideas mailing list