On Thursday, 11 July 2019 at 13:36:17 UTC, bauss wrote:
Most of the modules in arsd can be used separately right?

Yes, my policy is that the modules use no more than two other modules total.

The ones below with a star* indicate default reliance upon a common C library too, like openssl. I try to avoid these too, but I'm not as strict about it.

foundation modules (0 imports):

cgi.d (though some individual functions, if used, will import more), http2.d*, color.d, database.d, dom.d, jsvar.d, joystick.d, simpleaudio.d, argon2.d*, characterencodings.d and more.

next level (relies only on a foundation module):

simpledisplay.d, png.d, sqlite.d*, postgres.d*, mysql.d*, mssql.d*, bmp.d (etc), script.d. And more.

I also put minigui.d in this category, though it technically has two dependencies - simpledisplay.d, and through it, color.d, but still. nanovega.d is also on the same level as minigui, though if you use the image loader, it will pull in much more.

next level (combines two modules in some way):

database_generation.d, webtemplate.d, gamehelpers.d, web.d (which is my old web framework).



So yeah, you can see the majority of them have zero imports, then most the rest have only one. Only a few do more than that by default.

I say "by default" because in some cases, if you use other functions, it will import more. For example, dom.d's `Document.fromUrl` will implicitly import http2.d, or `parseGarbage` requires arsd.characterencodings, but if you don't use those functions, it will work by itself too.


This is basically my solution to dependency management: just have nothing to manage! (similarly, my approach to version management is to just very rarely break compatibility. My desktop tends to run ~6 month old dmd and my laptop tends to run ~1 year old dmd too, so I have broad compatibility with dmd versions as well.)

Reply via email to