Package: kotlin
Version: 1.3.31+ds1-8
Severity: wishlist

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.

Reply via email to