Google a annoncé le lancement de la version alpha de Kotlin Symbol Processing (KSP), un tout nouvel outil permettant de créer des plugins de compilation légers dans Kotlin

KSP offre des fonctionnalités similaires à celles de KAPT, mais il est jusqu'à 2x plus rapide, offre un accès direct aux fonctionnalités du compilateur Kotlin et est développé dans un souci de compatibilité multiplateforme.

KSP est compatible avec la version 1.4.30 de Kotlin et les versions ultérieures. Vous pouvez consulter le code source ouvert et la documentation dans le dépôt GitHub de KSP.

Nom : pasted image 0 (34).png
Affichages : 2807
Taille : 14,9 Ko

Pourquoi le KSP ?

La première requête des développeurs de Kotlin est de rendre les vitesses de création plus rapides. De nombreux développeurs itèrent et déploient des applications des douzaines de fois par jour, ce qui fait que rester assis à attendre une construction lente peut prendre beaucoup de temps. Un des plus grands défis de la compilation du code de Kotlin est que Kotlin n'a pas de système de traitement des annotations en natif. Les processeurs d'annotation comme Room sont omniprésents sur Android et reposent sur la compatibilité du traitement des annotations Java grâce à l'outil Kotlin Annotation Processing Tool (KAPT). Cependant, KAPT peut être lent à fonctionner, car il nécessite la génération de bouchons Java intermédiaires qui peuvent ensuite être ingérés par le système de traitement des annotations Java.

Lors de la conception de KSP, nous avons pensé à ce à quoi ressemblerait le traitement des annotations pour Kotlin si nous le construisions à partir de zéro. KSP offre une API puissante et pourtant simple pour analyser directement le code de Kotlin, ce qui réduit considérablement la contrainte de vitesse de construction imposée par la génération de talons de KAPT. En effet, les premiers tests comparatifs avec la bibliothèque Room montrent que KSP est environ 2x plus rapide que KAPT.

Débuter avec KSP

Pour voir à quoi ressemble le KSP en action, téléchargez le KSP playground project sur GitHub. Vous y trouverez :

  • Une bibliothèque : Une bibliothèque de simulation Nom : test.png
Affichages : 871
Taille : 1,3 Ko qui implémente le modèle de constructeur comme un processeur KSP
  • Consommation de projet : Un répertoire de la charge de travail qui montre comment utiliser le Nom : workload.png
Affichages : 866
Taille : 424 octets dans un projet Kotlin du monde réel


Toute la logique de mise en œuvre du constructeur se trouve dans le Nom : test.png
Affichages : 871
Taille : 1,3 Ko - pour le consommateur (Nom : workload.png
Affichages : 866
Taille : 424 octets), la seule différence entre l'utilisation de KAPT et de KSP est un changement de fichier de construction sur deux lignes :

Nom : Screen Shot 2021-02-09 at 12.11.52 PM.png
Affichages : 668
Taille : 32,2 Ko

Ceci est l'objectif de KSP : la plupart des développeurs d'applications Android n'ont pas besoin de se soucier de ses internes ; à part ce changement d'une ligne, une bibliothèque qui supporte KSP ressemble à un processeur d'annotation normal, seulement elle est jusqu'à 2x plus rapide. Cela dit, l'utilisation de KAPT et KSP dans le même module ralentira probablement votre construction au départ, donc pendant cette phase alpha, il est préférable d'utiliser KSP et KAPT dans des modules séparés.

Comme de plus en plus de processeurs d'annotation adoptent KSP, nous nous attendons à ce que la plupart de vos modules puissent utiliser KSP en remplacement de KAPT. Pour l'instant, vous pouvez vérifier quels processeurs d'annotation offrent le support KSP dans le tableau ci-après :

Nom : tableau.png
Affichages : 678
Taille : 11,1 Ko

Si une bibliothèque qui supporte ou implémente le support de KSP est absente du tableau, veuillez soumettre une demande d'extraction avec votre suggestion !

Si vous êtes l'auteur d'une bibliothèque qui utilise actuellement le traitement des annotations, vous pouvez trouver plus d'informations sur la façon de rendre votre bibliothèque compatible avec KSP dans les guides de démarrage rapide et LISEZMOI.

Depuis l'aperçu pour les développeurs en juin dernier, plus de 100 bugs et problèmes ont été fermés, dont des dizaines ont été signalés par l'incroyable communauté des développeurs de la bibliothèque Kotlin.

Source : Google blog

Et vous ?

Que pensez-vous de cette version alpha de Kotlin Symbol Processing (KSP) ?