If I were correct, breaking of ABI or type-binary-interface(TBI, e.g. Tasty) by compilers is not a regularity in Scala compiler development.
- It only happens relatively often in a pre-production stage of a compiler, or
- It may happen between big version changes of a production compiler [1].
Let’s call the first bootstrap problem, and the second migration problem.
It seems that the bootstrap problem is just temporary. Maybe a temporary solution is good enough for a temporary problem.
The migration problem is rare if it does occur. Maybe here we can isolate the problem from the problem of community build, and propose a temporary solution too?
Given the complexity of community build, I’d say we should optimize for reducing maintenance efforts. If it saves efforts on 90% of days and over 70% of the matrix, it’s already a win.
As a side effect, it will give us scalability — that is the possibility to add more projects and test more behaviors of compilers, that aligns with the primary goal of community build.
But Dotty artifacts are bin-compat with Scala2, and Dotty can compile with Scala2 libs (except for macros). I assume it’s more or less the case for major Scala2 compiler versions. ↩︎