Nowe API Kotlina przyśpieszy przetwarzanie adnotacji

Google udostępnił właśnie Kotlin Symbol Processing (lub KSP) w wersji alfa. KSP to API, które służy do tworzenia lekkich wtyczek do kompilatorów w Kotlinie. Jego działanie przypomina inną wtyczkę o nazwie KAPT, z tą jednak różnicą, że Kotlin Symbol Processing jest nawet 2 razy szybszy i zapewnia bezpośredni dostęp do funkcji kompilatora w języku Kotlin. Co więcej, KSP jest tworzony z myślą o wieloplatformowości.
Samo API zostało zaimplementowane jako wtyczka kompilatora. Ma ono również na celu ukrywanie zmian w kompilatorze i minimalizowanie nakładów potrzebnych do utrzymania.
Dlaczego KSP w ogóle powstał?
Dlaczego w ogóle zabrano się za tworzenie takiego narzędzia? W Kotlinie nie ma tak naprawdę natywnego procesora adnotacji - a adnotacji używa się w tym języku bardzo często (ogólnie adnotacji używa się często w developmencie na Androida) KSP pozwala właśnie na o wiele szybsze przetwarzanie adnotacji, przyspieszając jednocześnie proces budowania aplikacji.
Wielu programistów wykonuje naprawdę wiele iteracji po swoich aplikacjach, a więc długi czas budowania może tutaj naprawdę przyprawić o ból głowy.
Spójrzmy teraz na to, jak KSP działa.
Kotlin Symbol Processing w akcji
Po pierwsze trzeba pobrać KSP playground z GitHuba. Oto co możemy tam znaleźć:
- Bibliotekę
test-processor
, która implementuje wzorzec budowniczy jako KSP processor - Katalog
workload
, który pokazuje, jak z niego korzystać w prawdziwym projekcie z Kotlinem.
Cała logika znajduje się w test-processor, a jedyną różnicą między KAPT a KSP jest dwulinijkowa zmiana w build file:
I to jest właśnie to, w co KSP celuje: większość developerów Androida nie musi się już martwić o to, co się dzieje w środku; poza tą jedną zmianą, biblioteka obsługująca KSP wygląda jak normalny procesor adnotacji - tylko że o dwa razy szybszy.
Trzeba jednak uważać, bo korzystanie z KAPT i KSP w tym samym czasie prawdopodobnie na początku znacznie spowolni czas budowania - twórcy zalecają więc używanie tych dwóch narzędzi w oddzielnych modułach w obecnej fazie alfa.
Praca z KSP
Biblioteki, które obsługują KSP, przypominają normalne procesory adnotacji, aczkolwiek szybsze. Co więcej, twórcy twierdzą, że ponieważ coraz więcej procesów adnotacji zaczyna korzystać z KSP, to spodziewają się oni, iż większość modułów będzie w stanie używać KSP jako prawie bezpośredniego zamiennika KAPT.
Biblioteki, które obecnie korzystają z KSP to:
Więcej szczegółów tutaj.
Jeśli jesteś natomiast autorem biblioteki, która obecnie używa procesora adnotacji, to więcej informacji o tym, jak dostosować bibliotekę do KSP, możesz znaleźć tutaj i tutaj.
Podsumowanie
Kod źródłowy oraz dokumentacja KSP znajduje się na GitHubie. To API jest nadal rozwijane, więc możliwe jest, że trochę się jeszcze zmieni - nie zaleca się zatem korzystania z Kotlin Symbol Processing na produkcji. A to, co jeszcze się zmieni, zależy oczywiście od feedbacku developerów Kotlina.