This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Scala release process documentation

3 replies
Jorge Ortiz
Joined: 2008-12-16,
User offline. Last seen 29 weeks 3 days ago.
Is the Scala release process documented somewhere?
Backstory:
We (foursquare) recently upgraded from 2.8.1 to 2.9.1 and got bitten hard by https://issues.scala-lang.org/browse/SI-5052. Lift uses scala.xml extensively, and tracking down every call to .equals is hard-to-impossible, so we backported the patch from trunk to 2.9.1 (see: https://github.com/foursquare/scala/tree/2.9.1_fs). It applies cleanly, which is nice, and fixes our problem, which is even better.
However, we've noticed our compile times have degraded considerably. It's unlikely this is due to the patch itself, so I suspect it's related to how I'm building scala-library.jar and scala-compiler.jar.
Currently, I'm checking out this fork of 2.9.1 (https://github.com/foursquare/scala/tree/2.9.1_fs), then running:
    ./pull-binary-libs.sh    ant dist-opt
Then taking build/pack/scala-library.jar and build/pack/scala-compiler.jar as my binaries.
The output of "ant dist-opt" (attached) is somewhat concerning: it OOMs on docs.lib no matter how much memory I give it, and warns of methods that can't be inlined on locker.comp and on quick.plugins.
Any help here would be appreciated.
--j
extempore
Joined: 2008-12-17,
User offline. Last seen 35 weeks 3 days ago.
Re: Scala release process documentation


On Mon, Jan 2, 2012 at 11:57 PM, Jorge Ortiz <jorge.ortiz@gmail.com> wrote:
Is the Scala release process documented somewhere?

I'll leave that one for josh. 
However, we've noticed our compile times have degraded considerably. It's unlikely this is due to the patch itself, so I suspect it's related to how I'm building scala-library.jar and scala-compiler.jar.

I don't think so. 
Currently, I'm checking out this fork of 2.9.1 (https://github.com/foursquare/scala/tree/2.9.1_fs), then running:
    ./pull-binary-libs.sh    ant dist-opt
Then taking build/pack/scala-library.jar and build/pack/scala-compiler.jar as my binaries.

This should get you approximately what shipped as 2.9.1.  (But if you're going to wade all the way through dist-opt, you may as well take the stuff in dists.  If you're going to use pack, you can just run build-opt.) If you are seeing degradation relative to 2.9.1, then if it isn't the patch you applied, it is most likely one of the other patches since 2.9.1.  If you mean that your compile times have degraded relative to 2.*8*.1, then this is not entirely surprising and is very unlikely to be due to your compiler compiling, even if tremendously ham-fisted.
The output of "ant dist-opt" (attached) is somewhat concerning: it OOMs on docs.lib no matter how much memory I give it

That's "normal", although usually it gives in eventually.  If it seems to have an infinite appetite I suspect you're not actually giving it any more memory.  (If you're not trying to reach it through ANT_OPTS, try that.)
and warns of methods that can't be inlined on locker.comp and on quick.plugins.

That's "normal", it's a bug in the inliner and we like to be reminded a couple hundred times on every optimized build so we don't forget about it. 
  https://issues.scala-lang.org/browse/SI-4767
dcsobral
Joined: 2009-04-23,
User offline. Last seen 38 weeks 5 days ago.
Re: Scala release process documentation

On Tue, Jan 3, 2012 at 05:57, Jorge Ortiz wrote:
> Is the Scala release process documented somewhere?
>
> Backstory:
>
> We (foursquare) recently upgraded from 2.8.1 to 2.9.1 and got bitten hard
> by https://issues.scala-lang.org/browse/SI-5052. Lift uses scala.xml
> extensively, and tracking down every call to .equals is hard-to-impossible,
> so we backported the patch from trunk to
> 2.9.1 (see: https://github.com/foursquare/scala/tree/2.9.1_fs). It applies
> cleanly, which is nice, and fixes our problem, which is even better.
>
> However, we've noticed our compile times have degraded considerably. It's
> unlikely this is due to the patch itself, so I suspect it's related to how
> I'm building scala-library.jar and scala-compiler.jar.
>
> Currently, I'm checking out this fork of 2.9.1
> (https://github.com/foursquare/scala/tree/2.9.1_fs), then running:
>
>     ./pull-binary-libs.sh
>     ant dist-opt
>
> Then taking build/pack/scala-library.jar and build/pack/scala-compiler.jar
> as my binaries.
>
> The output of "ant dist-opt" (attached) is somewhat concerning: it OOMs on
> docs.lib no matter how much memory I give it, and warns of methods that
> can't be inlined on locker.comp and on quick.plugins.

What ANT_OPTS flags are you using? Ant will provide a default, but it
hasn't been enough for me in a while. I usually go with at least
-Xmx1800M -Xss3M -XX:MaxPermSize=300M instead of the defaults if I can
help it, and even more mx where I actually have the memory to spare.
This _has_ to be built with 64bits Java, though. I'm not sure if one
can build Scala with 32bits Java any longer -- I've gone 64bits JRE on
my Windows desktop precisely because I wasn't able to tweak the flags
any longer to get it to build.

>
> Any help here would be appreciated.
>
> --j
>

Joshua.Suereth
Joined: 2008-09-02,
User offline. Last seen 32 weeks 5 days ago.
Re: Scala release process documentation


On Jan 3, 2012 4:13 AM, "Paul Phillips" <paulp@improving.org> wrote:
>
>
>
> On Mon, Jan 2, 2012 at 11:57 PM, Jorge Ortiz <jorge.ortiz@gmail.com> wrote:
>>
>> Is the Scala release process documented somewhere?
>
>
> I'll leave that one for josh.
>  

Hahahahhaha.... oh. Right, serious question.

The documentation is the old scala installer build which, as part of making a release, would call dist-opt.   The release process is changing for 2.10.x since sbaz is going away.  For *full* 2.9.x release you need latex and sbaz and some unicorns (maybe a lolcat or two).   For practical purposes ant dist or ant dist-opt is fine

>>
>> However, we've noticed our compile times have degraded considerably. It's unlikely this is due to the patch itself, so I suspect it's related to how I'm building scala-library.jar and scala-compiler.jar.
>
>
> I don't think so.
>  
>>
>> Currently, I'm checking out this fork of 2.9.1 (https://github.com/foursquare/scala/tree/2.9.1_fs), then running:
>>
>>     ./pull-binary-libs.sh
>>     ant dist-opt
>>
>> Then taking build/pack/scala-library.jar and build/pack/scala-compiler.jar as my binaries.
>
>
> This should get you approximately what shipped as 2.9.1.  (But if you're going to wade all the way through dist-opt, you may as well take the stuff in dists.  If you're going to use pack, you can just run build-opt.) If you are seeing degradation relative to 2.9.1, then if it isn't the patch you applied, it is most likely one of the other patches since 2.9.1.  If you mean that your compile times have degraded relative to 2.*8*.1, then this is not entirely surprising and is very unlikely to be due to your compiler compiling, even if tremendously ham-fisted.
>
>> The output of "ant dist-opt" (attached) is somewhat concerning: it OOMs on docs.lib no matter how much memory I give it
>
>
> That's "normal", although usually it gives in eventually.  If it seems to have an infinite appetite I suspect you're not actually giving it any more memory.  (If you're not trying to reach it through ANT_OPTS, try that.)
>
>> and warns of methods that can't be inlined on locker.comp and on quick.plugins.
>
>
> That's "normal", it's a bug in the inliner and we like to be reminded a couple hundred times on every optimized build so we don't forget about it. 
>
>   https://issues.scala-lang.org/browse/SI-4767
>

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland