P A
02/02/2023, 8:33 PMsimon.vergauwen
02/03/2023, 8:57 AMStylianos Gakis
02/06/2023, 5:09 PMsimon.vergauwen
02/06/2023, 5:13 PMClassNotFoundException
, etc or other kinds of errors when using it from a 2.x.x project.
Same reason Kotlin puts on @ExperimentalTime
, they changed the binary in TimeSource
from 1.6 -> 1.7 and for exampling when you using TimeSource
in a 1.7 or 1.8 project with the current Kotest (compiled with 1.6) it results in https://github.com/kotest/kotest/issues/2960.@Deprecated
methods and thus breaking the binary.@ExperimentalXXX
for several years, and potentially breaking binary across minor versions. Which is for example what Kotlin did in the 1.6.
-> 1.7
version for TimeMark
.
• Evolve the APIs by introducing non-conflicting method names, or new packages. Deprecate old code, and bump major version. Which is what Kotest, Arrow, etc does. I think this is the more common approach.
I think it makes sense what Kotlin does, and I thought about doing the same thing for arrow.core.continuations
2-3 years ago but it might've also been really annoying having all of this stuff as OptIn
. It's hard to say which one was better, I think we have a pretty good forward migration roadmap so that it's not an issue and in the end it wouldn't have made a huge difference which road we would've taken.Stylianos Gakis
02/06/2023, 7:49 PM