@avsm @ryan Yes, I absolutely agree
I have been contemplating introducing generic SAT solving primitives in the Nix language to experiment with these ideas, but I'm not convinced that version resolving is a good idea except by doing it like what Golang is doing but it's not permitted by all ecosystems…
@raito @avsm Static packaging DSLs are relatively straightforward to translate (parsing and emitting in §5.1) but Turing-complete languages like Nix would be more challenging.
Re Golang's MVS, you might have already read it but I elaborate on when this isn't possible due to language constraints in §3.3.
@ryan @avsm On that tangent, I think it's already possible (and already achieved in some NixOS deployments) by using mount namespaces to mount /nix/store and let things live in another physical Nix store (in the root namespace) which lives in the usual Nix store location (in the workload namespace).
See: https://git.afnix.fr/afnix/infra/src/commit/dcd9d041c8a9c885b65d02ec60d3316ebe2dfe39/services/build-nix-daemon/default.nix for an implementation.
@ryan @avsm I think I'm fairly aligned with the goals of your preprint which is to transform the n^2 problem into an O(n) problem by having a core where every application ecosystem can reduce to. Whether Nix is used as an engine to power that core is something that also interest me. Unfortunately, I have been running out of time to play around with this.
When Python launched a PEP to settle on a format to describe system level dependencies, I had hoped something like that would emerge.