@toast also that in order to use dlls efficiently you have to mark all external linkage dllimport which means you effectively have to pass to the code at build time what type of library you are linking against
@toast i mean yeah that part is fine but other than that handling of windows dlls is uhh
i don't like static linking in the general case because it erases the real meaning of abi in practice and pushes things more towards being very wrong (like rust with its monomorphization and "compile everything, all at once" is largely enabled by "static link everything")
i want dynamic linking, generics via dynamic dispatch like eg swift (but i'm fine ish with the way c++ does it, if restraint is applied), stable abis, reasonable library management, being able to build all the pieces individually and get all the benefits stemming from that eg patch security issues on the fly without rebuilding world
i don't mind things being statically *linkable* (that should kinda just be implicit because there isn't anything you should be doing that should prevent it, in general) but i'm very sad about where things are going
flatpak is just a result of the whole "give distribution powers back to the developer" which is also its own nasty can of worms because developers generally don't give a shit about a large portion of their potential users
@q66 yea agreed , idk it just feels like statlinking is only ok for increasingly niche usecases (and rust. of course)
@toast i'm not sure how i feel about dlopen in general, i kinda feel like restraint should be applied when using it because it means the ldso cannot know ahead of time and symbol resolution at runtime is wonky
separate processes + ipc are ideal (and that also works for static) though not always doable
@noisytoot @q66 My bad, you can't use dynamic linking in NixOS without patching the program you want to run
That's why I had (and gave) the impression you couldn't use dlls at all in NixOS
@q66 i don't think it's particularly better than static, but it is what systems are built upon, and so should be what is preferred
though i can see a way to make statlinking work on the distribution side, but itd need all packages and software to be done differently to be good (the way i see it is a built but pre link cache (to not need to rebuild everything every time, only relink) and if the package or one of its deps gets updated, it gets relinked and its tests ran, if that fails, the update to that package is abandonned so users keep a working package, and an error is sent to maintainers
again, different model from what we're using right now, and our software doesn't expect that at all, so it's just a neat thought experimentation likely to never see the light of day