Nekompatibilní verze Kotlin v knihovně

Nekompatibilní verze Kotlin v knihovně
« kdy: 10. 02. 2025, 00:16:35 »
Zdravicko,

potrebujem pridat do (gradle) projektu kniznicu A, ktora ma zavislot na kniznici B.

Tato B kniznica vyuziva kotlin vo verzii 2.x, zatial co nas projekt je len vo verzii 1.7. Je to dost velky projekt na ktorom su zas postavene ine zavislosti, takze nemozem si dovolit povysit kotlin na vyssiu verziu.

Ake mam moznosti okrem povysenia projektu na novy kotlin?


Re:Nekompatibilní verze Kotlin v knihovně
« Odpověď #1 kdy: 10. 02. 2025, 07:45:01 »
V podstate žiadne. Áno, síce môžeš v gradle build skripte použiť exclude a vynútiť inú verziu závislostí, čím ti možno prejde kompilácia, ale ak tá knižnica naozaj potrebuje kotlin 2.0 a potrebuje volať nejaké jeho API, tak samozrejme narazíš na problém v runtime. T.j. bez znalosti kódu (čo presne tá knižnica potrebuje z 2.0) sa na túto otázku nedá odpovedať.

Re:Nekompatibilní verze Kotlin v knihovně
« Odpověď #2 kdy: 10. 02. 2025, 08:01:50 »
Používat knihovnu se starším Kotlinem – to už bych spíš čekal úspěch od povýšení Kotlinu v projektu.

Další možnost je rekompilovat knihovnu se starším Kotlinem, ale je to podobné řešení jako exclude. Binární nekompatibility to vyřeší, nekompatibility v API se projeví hned.

Dále je možné knihovnu nějak izolovat a používat dvě různé verze Kotlinu, ale to taky není univerzální řešení. Knihovna může běžet v separátním procesu. Je-li to na JVM, může běžet v separátním ClassLoaderu v rámci stejného procesu. Záleží ale dost na knihovně a jejím použití, zda-li toto řešení lze prakticky použít.

Re:Nekompatibilní verze Kotlin v knihovně
« Odpověď #3 kdy: 10. 02. 2025, 08:11:52 »
Já bych se toho upgradu na 2.0 tolik nebál. Stejně vás to čeká a moc breaking changes tam pokud vím nebylo, takže pokud neděláte nějaký fakt extra prasárny, tak by to mělo jít celkem hladce... (jestli teda už jsou kompatibilní všechny knihovny, který používáte)