Сравнение Scala 2.7.7 (последняя версия 2.7.x) с Scala 2.8.1 (последняя версия 2.8.x) Я собрал следующие показатели
Scala version | 2.7.7 2.8.1
------------------------------------------------
Compressed jar file | 3.6 MB 6.2 MB
Uncompressed files | 8.3 MB 16.5 MB
.class files in . | 1.8 MB 1.7 MB
in ./actors | 554.0 KB 1.3 MB
in ./annotation | 962 B 11.7 KB
in ./collection | 2.8 MB 8.8 MB
in ./compat | 3.8 3B 3.8 KB
in ./concurrent | 107.3 KB 228.0 KB
in ./io | 175.7 KB 210.6 KB
in ./math | --- 337.5 KB
in ./mobile | 40.8 KB 47.3 KB
in ./ref | 21.8 KB 26.5 KB
in ./reflect | 213.9 KB 940.5 KB
in ./runtime | 271.0 KB 338.9 KB
in ./testing | 47.1 KB 53.0 KB
in ./text | 27.6 KB 34.4 KB
in ./util | 1.6 MB 1.4 MB
in ./xml | 738.9 KB 1.1 MB
Самые большие нарушители составляют scala.collection(в 3,1 раза больше) и scala.reflect(в 4,4 раза больше). Увеличение пакета сбора в тот же промежуток времени, что и большая переработка всей структуры коллекции для 2.8, поэтому я предполагаю, что причина.
Я всегда предполагал, что магия системы типов, которая вычисляет лучший возвращаемый тип методов класса коллекции (который был большим изменением в 2.8), будет выполняться во время компиляции и после этого не будет видимым.
- Почему переписывание привело к такому большому увеличению размера?
Насколько я знаю, планируется улучшить scala.io, scala.reflect и scala.swing, есть как минимум две другие библиотеки актеров, выполняющие то же самое, что и scala.actor(Lift актеры) или намного больше (Akka) и scala.testing официально уже заменена сторонними библиотеками тестирования.
-
Будет ли улучшенный scala.io, scala.reflect или scala.swing результат в сопоставимом увеличении размера или в случае scala.collection - действительно особое обстоятельство?
-
Считается ли он делегировать реализацию актеров Lift или Akka, если в JDK 8 будет использоваться система модуляции?
-
Есть ли планы окончательно удалить scala.testing или разбить его из jar файла библиотеки?
-
Возможно ли включение типов SAM, методов Defender или методовHandles в JDK7/JDK8 приведет к возможности уменьшения количества классов, которые должен генерировать компилятор Scala для анонимного/внутреннего класса/синглетов/и т.д.?