title: Why did Scala's library double its size between 2.7 and 2.8?
body: <p>Comparing <strong>Scala 2.7.7</strong> (last 2.7.x release) with <strong>Scala 2.8.1</strong> (latest 2.8.x release) I gathered the following metrics:</p>
  
  <pre><code> 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  
  </code></pre>
  
  <p>The biggest offenders are <em>scala.collection</em> (3.1 times bigger) and <em>scala.reflect</em> (4.4 times bigger).
  The increase in the collection package is in the same time frame as the big rewrite of the whole collection framework for 2.8, so I guess that's the cause.</p>
  
  <p>I always assumed that the type system magic which computes the best return type of the collection class methods (which was the big change in 2.8) would be done at compile time and won't be visible after that.</p>
  
  <ul>
  <li>Why did the rewrite result in such a big increase in size?</li>
  </ul>
  
  <p>As far as I know it is planned to improve <em>scala.io</em>, <em>scala.reflect</em> and <em>scala.swing</em>, there are at least two other actor libraries doing the same than <em>scala.actor</em> (Lift actors) or a lot more (Akka) and
  <em>scala.testing</em> is officially already superseded by third party testing libraries.</p>
  
  <ul>
  <li><p>Will an improved <em>scala.io</em>, <em>scala.reflect</em> or <em>scala.swing</em> result in a comparable size increase or was the case of <em>scala.collection</em> a really special circumstance?</p></li>
  <li><p>Is it considered to delegate the actors implementation to Lift or Akka, if there will be an usable modularization system in JDK 8?</p></li>
  <li><p>Are there plans to finally remove <em>scala.testing</em> or split it from the library jar-file?</p></li>
  <li><p>Might the inclusion of SAM types, Defender Methods or MethodHandles in JDK7/JDK8 lead to a possibility of reducing the amount of classes the Scala compiler has to generate for anonymous/inner class/singletons/etc.?</p></li>
  </ul>