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
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.