#1153013 Kotlin package split

#1153013#5
Date:
2026-11-04 13:15:44 UTC
From:
To:
The kotlin source package builds a single binary package of 282 MB which
mixes the runtime libraries, the command line compiler, the embeddable
compiler and the build tool plugins. Every package depending on kotlin
pulls all of them, although only a small part is actually used: gradle
needs 13 of the 87 libraries (112 MB) and never runs the command line
compiler; Kotlin-based applications only need 23 MB of runtime libraries.


I suggest splitting the package along these lines:


   libkotlin-runtime-java  (16 JARs, 22.74 MB)
       The libraries needed at runtime by a program compiled with Kotlin.

       kotlin-android-extensions-runtime           0.00 MB
       kotlin-annotations-android                  0.00 MB
       kotlin-annotations-jvm                      0.00 MB
       kotlin-daemon-client                        0.67 MB
       kotlin-mutability-annotations-compat        0.00 MB
       kotlin-native-utils                         0.12 MB
       kotlin-osgi-bundle                          4.73 MB
       kotlin-reflect                              9.16 MB
       kotlin-reflect-api                          0.85 MB
       kotlin-stdlib                               3.02 MB
       kotlin-stdlib-common                        0.27 MB
       kotlin-stdlib-jdk7                          0.00 MB
       kotlin-stdlib-jdk8                          0.02 MB
       kotlin-test                                 0.06 MB
       kotlinx-metadata                            0.41 MB
       kotlinx-metadata-jvm                        3.40 MB

       Depends: libjetbrains-annotations-java


   libkotlin-scripting-java  (5 JARs, 0.93 MB)
       The Kotlin scripting API (script runtime JSR-223 engine)

       kotlin-script-runtime                       0.08 MB
       kotlin-script-util                          0.14 MB
       kotlin-scripting-common                     0.26 MB
       kotlin-scripting-impl                       0.29 MB
       kotlin-scripting-jvm                        0.16 MB

       Depends: libkotlin-runtime-java,
                libkotlinx-coroutines-java,
                libtrove-intellij-java


   libkotlin-compiler-java  (14 JARs, 96.37 MB)
       The compiler as a library: kotlin-compiler
       and the compiler plugins.

       kotlin-allopen-compiler-plugin              0.03 MB
       kotlin-android-extensions-compiler          0.01 MB
       kotlin-annotation-processing                0.95 MB
       kotlin-annotation-processing-base           0.42 MB
       kotlin-annotation-processing-cli            0.06 MB
       kotlin-annotation-processing-runtime        0.00 MB
       kotlin-compiler                            93.30 MB
       kotlin-descriptors.runtime                  0.23 MB
       kotlin-jvm-abi-gen                          0.07 MB
       kotlin-noarg-compiler-plugin                0.05 MB
       kotlin-sam-with-receiver-compiler-plugin    0.02 MB
       kotlin-scripting-compiler                   0.07 MB
       kotlin-source-sections-compiler-plugin      0.04 MB
       kotlinx-serialization-compiler-plugin       1.13 MB

       Depends: libkotlin-runtime-java,
                libkotlin-scripting-java,
                libjline3-java,
                libjansi-java,
                libvavr0-java,
                libatinject-jsr330-api-java,
                libgeronimo-annotation-1.3-spec-java


   libkotlin-compiler-modules-java  (35 JARs, 53.80 MB)
       The modules embedded in kotlin-compiler.jar.

       kotlin-backend                              5.81 MB
       kotlin-backend-common                       0.11 MB
       kotlin-backend.js                           4.23 MB
       kotlin-backend.jvm                          1.80 MB
       kotlin-build-common                         0.73 MB
       kotlin-cli                                  1.33 MB
       kotlin-cli-common                           0.63 MB
       kotlin-container                            0.14 MB
       kotlin-daemon-common                        0.36 MB
       kotlin-descriptors                          2.68 MB
       kotlin-descriptors.jvm                      1.70 MB
       kotlin-deserialization                      0.63 MB
       kotlin-frontend                            10.29 MB
       kotlin-frontend.common                      0.03 MB
       kotlin-frontend.java                        1.52 MB
       kotlin-frontend.script                      0.23 MB
       kotlin-incremental-compilation-impl         0.34 MB
       kotlin-ir.backend.common                    2.51 MB
       kotlin-ir.psi2ir                            1.08 MB
       kotlin-ir.tree                              2.72 MB
       kotlin-js.ast                               0.41 MB
       kotlin-js.dce                               0.18 MB
       kotlin-js.frontend                          0.51 MB
       kotlin-js.parser                            0.26 MB
       kotlin-js.serializer                        2.21 MB
       kotlin-js.translator                        3.54 MB
       kotlin-light-classes                        1.28 MB
       kotlin-metadata                             0.99 MB
       kotlin-metadata.jvm                         0.35 MB
       kotlin-plugin-api                           0.03 MB
       kotlin-psi                                  2.12 MB
       kotlin-resolution                           2.35 MB
       kotlin-serialization                        0.19 MB
       kotlin-util                                 0.27 MB
       kotlin-util.runtime                         0.22 MB

       Depends: libkotlin-runtime-java,
                libkotlin-scripting-java,
                libjline3-java,
                libjansi-java,
                libvavr0-java,
                libatinject-jsr330-api-java,
                libgeronimo-annotation-1.3-spec-java

       The JARs of this package are entirely contained in
       kotlin-compiler.jar. Nothing in Debian uses them separately (yet),
       so moving them to a separate package saves 54 MB on every
       installation that only needs the compiler, while leaving the Maven
       artifacts complete for a project depending on a single module.
       Dropping them is another option.


   libkotlin-compiler-embeddable-java  (3 JARs, 94.81 MB)
       The compiler with the embedded (and relocated) dependencies.
       This is what Gradle uses.

       kotlin-android-extensions                   0.01 MB
       kotlin-compiler-embeddable                 94.03 MB
       kotlin-scripting-compiler-embeddable        0.77 MB

       Depends: libkotlin-runtime-java,
                libkotlin-scripting-java,
                libtrove-intellij-java

       kotlin-android-extensions and kotlin-scripting-compiler-embeddable
       mirror kotlin-android-extensions-compiler and
       kotlin-scripting-compiler in the libkotlin-compiler-java package.
       They reference the relocated IntelliJ classes found in
       kotlin-compiler-embeddable and are therefore packaged with it.


   libkotlin-gradle-plugin-java  (6 JARs, 4.57 MB)
       The Gradle plugins and the related components.

       kotlin-annotation-processing-gradle         0.96 MB
       kotlin-compiler-runner                      0.05 MB
       kotlin-gradle-plugin                        3.37 MB
       kotlin-gradle-plugin-api                    0.13 MB
       kotlin-gradle-plugin-model                  0.02 MB
       kotlin-sam-with-receiver                    0.05 MB

       Depends: libkotlin-compiler-embeddable-java

       kotlin-compiler-runner (used by the plugin to start the compiler)
       declares a dependency on kotlin-build-common in its POM, but
       kotlin-build-common is already embedded in
       kotlin-compiler-embeddable. To avoid a dependency on
       libkotlin-compiler-modules-java the POM will be patched to mark
       the dependency on kotlin-build-common as 'provided'.


   libkotlin-maven-plugin-java  (1 JAR, 0.08 MB)
       The Maven plugin.

       kotlin-maven-plugin                         0.08 MB

       Depends: libkotlin-compiler-java,
                libmaven3-core-java,
                libmaven-plugin-tools-java,
                libmaven-compiler-plugin-java

       The package is fairly small but it pulls many dependencies
       from the Maven ecosystem.


   kotlin  (5 JARs, 7.13 MB)
       The command line tools (kotlin, kotlinc, kotlinc-js, kapt...),
       the compile daemon and the Ant task.

       kotlin-ant                                  0.05 MB
       kotlin-daemon                               0.48 MB
       kotlin-main-kts                             6.47 MB
       kotlin-preloader                            0.10 MB
       kotlin-runner                               0.03 MB

       Depends: libkotlin-compiler-java

       The Ant task launches the compiler through kotlin-preloader, so it
       is packaged with the command line tools.