As I am moving to help my organization adopt scala 3, i am trying to map out the potential chanllenge to look after.
Generally, i was readying about binary compatibility change with scala 3 and something wasn't quite clear to me. It is best summarised by the following question:
What happens if a library is developped with scala 3.4.1 and someone try to use it in a project that run 3.2.1 ? From my understanding given that forward compatibility is not a garantee there will be a runtime exception. Totally fine and understandable. So in fact the real question is, given that we remove the second number when pubishing a library, meaning library are published as 3 as opposed to** 3.4**, how do a user know that he can't use that library in his project which is at 3.2.
I am wondering what's the best practices that the community is putting in place to handle this scenario gracefully. Is the expectation that, basically, we assume the user will have good tests suit, which will fail with a runtime failure, and then figure out that it is time to upgrade their project version which "supposedly" they can now do safely and systematically because of the strong garanteed backward compatibility. I said supposedly because of course, in the context of an organization and given the jvm eco system there are a host of concern to take into acount before upgrading anything.
What measure are we expecting the different parties involved to take (library maintainer n user), to make that particular scenario something not that painful.