On Sunday, 4 September 2022 at 03:50:56 UTC, Ali Çehreli wrote:
For example, there is fixedsizearray, which does not belong to any package:

Yeah, this is bad design since two separate people might reuse the name and then end users - even if it comes through a couple layers of dependencies they didn't even know about - can see conflicts when they try to link the program.

You really need globally unique D names.

On the other hand, arsd-official:minigui does have a package. (And that answers a question: Dash character is acceptable in package and module names.)

dub allows dash. D does not. The dub name and the D name do not have to match (I personally consider this yet another design flaw in dub, but it is what it is).

The reason mine is called "arsd-official" on dub is because someone else registered "arsd" before me, but they didn't keep up with changes, so I had to do it myself but the name was already taken.

But remember, the dub package name and the D package/module names are completely separate. D knows absolutely nothing about dub and dub knows very little about D. You should have them match when you can for user convenience, but it doesn't actually check it.

How does that work? When the following dependency added to a user's project,

  "arsd-official:minigui": "~>10.9.1"

does dub pull the entirety of arsd-official and then use minigui module from it?

Yes, dub always pulls its top level thing in full. Then I had to specify a long list of subpackages in dub.json to let it understand the independent modules.

Dub is unbelievably and embarrassingly bad. It really is a disappointment, but you can make it somewhat work if you repeat yourself enough times. Downloading a few extra kilobytes of D code is the least of its problems.

Reply via email to