Hello, sorry to not have the time to look for similar request(s).
I really like portage slotting abilities but there are some obvious drawbacks:
emerge will always try to update to the latest versions of a package which will pull in multi slotted packages (especially dev-lang/$lang) every time.
To limit this annoyance, emerge should only pull in the latest lower sloted version if it satisfes all the installed dependencies. Else try the next one. If the next one satisfy all the dependency, remove the prevous one. And hence forth. Else, keep two slots if it satisfy all the installed dependencies.
Why the lower? because the lower has more chances to get stabilized sooner than later in many cases.
And this mechanism will avoid to have multiple slotted packages without any actual need to have that many.
I'm not arguing for a few MB disk space saved. However, as Gentoo is sources based, dev-lang/$lang often require too much computing brute force to compile. I don't want to compile unnecessarily all the slots of a particular dev-lang/$lang when I actually need only one.
Now if the user install another slot more than required for the installed dependencies, I understand that emerge should try to update to the latest version of the installed slots.
Steps to Reproduce:
1.emerge -avuDN @world
pull in the latest slot and latest version of the slot
update to the latest version of the needed/necessary slot first if it's enough, else try the next slot. And hence forth
We can add an option for this, but it won't be enabled be default because normally we want new slots to get pulled in and have the old slots be removed by --depclean when they are no longer needed.