Jump to page: 1 2
Thread overview
Having "blessed" 3rd party libraries may make D more popular and stable for building real software.
23 hours ago
WraithGlade
19 hours ago
monkyyy
18 hours ago
Serg Gini
15 hours ago
Kapendev
7 hours ago
WraithGlade
5 hours ago
monkyyy
5 hours ago
Kapendev
5 hours ago
Dennis
4 hours ago
Lance Bachmeier
3 hours ago
Dennis
4 hours ago
Mike Shah
4 hours ago
monkyyy
23 hours ago

There's a trend I've noticed among some of the newer programming languages that have managed to grow their communities despite being so small: some of them have partial official support for one or more of the most useful 3rd party libraries.

The language maintainers themselves make sure that the interfaces and process for getting those libraries working is streamlined and polished and a pleasant and reliable experience and treat it like a kind of in-between or semi-official library status. It brings more nuance and gradation into the notion of what language support means for a library.

Basically, there's a longstanding fiction in languages that somehow only file access and communication with the OS text terminal/shell and the various data structures and algorithms and concurrency primitives (etc) somehow constitute a sufficient foundational library for making real modern software, but really most modern software that average users actually care about basically can't be made without access to the multimedia (graphics, sound, input, etc) components of the computer.

Relying in an entirely hands-off way on 3rd parties (who often become active or inactive at random and thus can't be relied upon much) for all such libraries makes the ecosystem of a language vulnerable and hence less likely to be used in real software.

Having one or more officially backed ("blessed" or "vendor") libraries helps ensure that a programming language remains usable for real software more consistently and decreases the chances people will be deterred due to having difficulty getting the basics working.

The best library candidates for such if you ask me are libraries like SDL or Raylib or Sokol or Love2D (though the last is Lua based, not C based). Having even one such library be as polished and as seamless of an experience as possible increases the viability of the ecosystem.

Granted, dub makes some of these libraries easy to set up, but it is still easy to mess up during an install or to miss a critical bit of info (etc) and that likely deters more people from using D.

Some such libraries are easier and/or much more clearly communicated than others, such as Raylib and Sokol for D being relatively easy to set up (though Sokol has some dependencies that are easy to overlook and create needless difficulties in the setup process), whereas others such as the BindBC bindings seem bewildering and hard to get even the most basic examples working for and have instructions that can only be readily understood if you already know more things about the library than a new user of it and/or of D would know.

Indeed, broadly speaking, library ecosystem health is often even more important for user adoption than core language feature development is. That's a reality that matters if a language seeks to survive and thrive. If libraries don't seem to work with minimal effort then new users may see no apparent path forward and may even drop the whole language in frustration.

In fact, it seems like there is some evidence that precisely that problem has historically played a large role in D not being as popular as it seems to deserve to be.

I have seen multiple old forum comments where people say they just gave up because they couldn't manage to use D for real software even though they really wanted to.

That suggests that friction in the uptake process for D's library ecosystem is playing a big role or at least historically has.

At least some libraries are easy to set up (like D's newest Raylib bindings), but expecting users to randomly stumble on the right libraries for ease of use is asking for losing a large percentage of them to them getting frustrated before they ever gain enough momentum to feel confident that they can rely on the language for real work and not just for playing around with the core language itself.

Picking an expressive and broadly capable but not overly complicated multimedia library (such as SDL or Raylib or Sokol) and making it as easy to use as the standard library itself and perhaps even shipping it with every standard copy of D and perhaps even rewriting the library entirely in D or at least wrapping it to be more seamless than a mere binding could go a long way to improving the D ecosystem over time.

Anyway, that's my thoughts on it and thank you for reading.

D is great regardless and dub is especially helpful in navigating these issues.

If D seeks more users though then it would benefit from an even more communicative and seamless ecosystem.

19 hours ago

On Tuesday, 1 July 2025 at 02:08:57 UTC, WraithGlade wrote:

>

There's a trend I've noticed among some of the newer programming languages that have managed to grow their communities despite being so small: some of them have partial official support for one or more of the most useful 3rd party libraries.

The language maintainers themselves make sure that the interfaces and process for getting those libraries working is streamlined and polished and a pleasant and reliable experience and treat it like a kind of in-between or semi-official library status. It brings more nuance and gradation into the notion of what language support means for a library.

Basically, there's a longstanding fiction in languages that somehow only file access and communication with the OS text terminal/shell and the various data structures and algorithms and concurrency primitives (etc) somehow constitute a sufficient foundational library for making real modern software, but really most modern software that average users actually care about basically can't be made without access to the multimedia (graphics, sound, input, etc) components of the computer.

Relying in an entirely hands-off way on 3rd parties (who often become active or inactive at random and thus can't be relied upon much) for all such libraries makes the ecosystem of a language vulnerable and hence less likely to be used in real software.

Having one or more officially backed ("blessed" or "vendor") libraries helps ensure that a programming language remains usable for real software more consistently and decreases the chances people will be deterred due to having difficulty getting the basics working.

The best library candidates for such if you ask me are libraries like SDL or Raylib or Sokol or Love2D (though the last is Lua based, not C based). Having even one such library be as polished and as seamless of an experience as possible increases the viability of the ecosystem.

Granted, dub makes some of these libraries easy to set up, but it is still easy to mess up during an install or to miss a critical bit of info (etc) and that likely deters more people from using D.

Some such libraries are easier and/or much more clearly communicated than others, such as Raylib and Sokol for D being relatively easy to set up (though Sokol has some dependencies that are easy to overlook and create needless difficulties in the setup process), whereas others such as the BindBC bindings seem bewildering and hard to get even the most basic examples working for and have instructions that can only be readily understood if you already know more things about the library than a new user of it and/or of D would know.

Indeed, broadly speaking, library ecosystem health is often even more important for user adoption than core language feature development is. That's a reality that matters if a language seeks to survive and thrive. If libraries don't seem to work with minimal effort then new users may see no apparent path forward and may even drop the whole language in frustration.

In fact, it seems like there is some evidence that precisely that problem has historically played a large role in D not being as popular as it seems to deserve to be.

I have seen multiple old forum comments where people say they just gave up because they couldn't manage to use D for real software even though they really wanted to.

That suggests that friction in the uptake process for D's library ecosystem is playing a big role or at least historically has.

At least some libraries are easy to set up (like D's newest Raylib bindings), but expecting users to randomly stumble on the right libraries for ease of use is asking for losing a large percentage of them to them getting frustrated before they ever gain enough momentum to feel confident that they can rely on the language for real work and not just for playing around with the core language itself.

Picking an expressive and broadly capable but not overly complicated multimedia library (such as SDL or Raylib or Sokol) and making it as easy to use as the standard library itself and perhaps even shipping it with every standard copy of D and perhaps even rewriting the library entirely in D or at least wrapping it to be more seamless than a mere binding could go a long way to improving the D ecosystem over time.

Anyway, that's my thoughts on it and thank you for reading.

D is great regardless and dub is especially helpful in navigating these issues.

If D seeks more users though then it would benefit from an even more communicative and seamless ecosystem.

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.

18 hours ago

On Tuesday, 1 July 2025 at 05:47:47 UTC, monkyyy wrote:

> >

If D seeks more users though then it would benefit from an even more communicative and seamless ecosystem.

D is not
It is just small club of chill tinkerers.

>

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.

OpenD has some fixes and qol features, but I think it is not enough to get traction and a lot of new users.
And it is actually developed in the counter direction - like a fixed lang for advanced D users, and not for newcomers from other langs or people with 0 experience.

>

You wont win this fight, it will be smashing your head into a brick wall.

Are winning son?

15 hours ago

On Tuesday, 1 July 2025 at 02:08:57 UTC, WraithGlade wrote:

>

There's a trend I've noticed among some of the newer programming languages that have managed to grow their communities despite being so small: some of them have partial official support for one or more of the most useful 3rd party libraries.

[...]

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 is awesome!

7 hours ago

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 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.

5 hours ago

On Tuesday, 1 July 2025 at 18:06:28 UTC, WraithGlade wrote:

>

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.

adr is the largest lib writter; you could debate who's the most important one of those but by line count and attempted scope, adr does all the things and dub and upstream are dead to him unless you start paying; or something like that.

There is still a large degree of compatibility(tho upstream may one day make a stupid breaking change) upstream isnt really... moving, these wild goose chases are just irreverent to code I write and mostly irrelivent to most historical libs; you cant slap @safe on old code without basically redesigning it or if you did and theres a break @safe change, afr is most likely willing to revert.

You asked for shipping raylib; look: https://github.com/opendlang/d/tree/cleaning-up/source/odc/raylib

its not shipping quite yet but if you were to do some cleaning and ask adr it probably be a week away; while I smashed my head into upstreams disinterest for years

5 hours ago

On Tuesday, 1 July 2025 at 18:06:28 UTC, WraithGlade wrote:

>

On Tuesday, 1 July 2025 at 05:47:47 UTC, monkyyy wrote:
The criticisms you bring up are all just conflations of unrelated things, basically.

I get that the main goal here is to make things easier to install and use. I still think my point stands though. While versioning isn't an issue if libraries aren't tied directly to the compiler, they often depend on other things that are. Probably the standard library for example.

You also lose things with this approach. From what I have seen, collections tend to be somewhat messy projects. They are not quite as good a they feel like at the start.

Imo, I would rather focus on improving the existing things instead of starting from scratch. That's where I'm coming from. Awesome-D has improved a lot recently. The game section is looking nice. I can't speak much about the other sections.

5 hours ago

On Tuesday, 1 July 2025 at 18:06:28 UTC, WraithGlade wrote:

>

Nothing about my suggestion in any way ties any library to the core language or standard library.

You suggested:

>

making [a multimedia library] as easy to use as the standard library itself and perhaps even shipping it with every standard copy of D

Let's say installing pacman -S dmd would put raylib-d under /usr/include/dlang/dmd next to druntime and Phobos. That version of raylib-d will only change when the dmd package from Arch gets updated.

4 hours ago

On Tuesday, 1 July 2025 at 20:00:01 UTC, Dennis wrote:

>

On Tuesday, 1 July 2025 at 18:06:28 UTC, WraithGlade wrote:

>

making [a multimedia library] as easy to use as the standard library itself and perhaps even shipping it with every standard copy of D

Let's say installing pacman -S dmd would put raylib-d under /usr/include/dlang/dmd next to druntime and Phobos. That version of raylib-d will only change when the dmd package from Arch gets updated.

This is once again D flexing its muscles as the all-time king of NIH. Just follow what other languages do. Install a package and then add it to your program the same as you do with Phobos:

import std.math;
import user.raylib;

But I've wasted enough time pushing for this over the years. Other languages do it and D does it with Phobos, yet the main objection is that there's no way to do it.

If someone doesn't want to do it that way because they need the super-duper enterprise version of everything, they can use the current clunky approach.

4 hours ago

On Tuesday, 1 July 2025 at 02:08:57 UTC, WraithGlade wrote:

>

There's a trend I've noticed among some of the newer programming languages that have managed to grow their communities despite being so small: some of them have partial official support for one or more of the most useful 3rd party libraries.

[...]

It's not a bad idea to have a list of libraries for different categories to help beginners. C++ has boost for example, which I have always seen as the first extension of the standard libraries that folks use and trust (and then often get incorporated into the standard library later on). I think the new phobos 3 as I understand is quite open to adding more modules anyway.

At the least, having a list of popular dub packages would be useful as a test-suite for new builds of the compiler. Maybe that's the place to start by building a testsuite with a few popular dub libraries. If there isn't a wiki page already on this, that would be another value-add to the community I'm sure.

« First   ‹ Prev
1 2