On Thursday, 2 November 2023 at 19:30:58 UTC, Jonathan M Davis wrote:
The entire reason that it was added to the language was to be able to split up existing modules without breaking code. And it does that well.

No, it doesn't do that well at all. In fact, it does that so extremely poorly that (as you might recall) there were a very large number of support requests shortly after Phobos started using it about broken builds, since it would keep the old file and the new file when you updated and this stupid, idiotic design can't handle that situation.

This only subsided because enough time has passed that nobody tries using it to break up existing modules anymore.

It is just a *terrible* design that never should have passed review. It is randomly inconsistent with the rest of the language and this manifests as several bugs.

(including but not limited to:

https://issues.dlang.org/show_bug.cgi?id=14687 doesn't work with .di https://issues.dlang.org/show_bug.cgi?id=17699 breaks if you try to use it for its intended purpose https://issues.dlang.org/show_bug.cgi?id=20563 error messages hit random problems <can't find the link> all-at-once vs separate compilation of package leads to inconsistent reflection results

im sure the list went on if i spent a few more minutes looking for my archives)


package.d is indeed completely unnecessary for creating a module that publicly imports other modules in order to be able to import a single module and get several modules.

Yeah, it is a terrible feature that is poorly designed, hackily implemented, and serves no legitimate use case.

Reply via email to