Notes on package management

If I would design a new programming language, I would pay some more in-depth attention to the module / dependency system, etc., in order to avoid some pitfalls which - Python - Rust, Go

fell into.

In particular: - Like Python, the build system of packages should be completely independent of the dependency management. One way to implement this would be to provide a way of building packages that is very close to the language implementation (e.g. interpreter / compiler / etc.) itself, but not too close (e.g. it should be possible to integrate the build system with multi-language build systems like Meson and CMake, or at least a way to compile something without it touching dependency management at all except for having a way to pass dependency information in terms of fully resolved installed package paths (perhaps relative to some small amount of “roots”), or shared library paths, to link against. And combining that by “just” not providing any centralized package management for it, or perhaps only providing a repository in some normal global distribution package manager. - Unlike Python, allow packages to depend (at least transitively) on multiple versions of the same package.