Commit Graph

362 Commits

Author SHA1 Message Date
Mark Harrah 5dc671c7f8 Synchronize ClassLoaderCache and the Scala provider cache.
Construction of Scala providers was already properly synchronized jvm and machine-wide.
The cache on top of construction was not and neither was the newer ClassLoaderCache.
This could cause the same Scala version to be loaded in multiple class loaders, taking
up more permgen space and possibly decreasing performance due to less effective jit.

The issue is very rare in practice for 0.13 because of the low probability of contention
on ClassLoaderCache.  This is because the work for a cache miss is mainly the construction
of a URLClassLoader.  In 0.12, however, the work potentially involved network access and
class loading (not just class loader construction), thus greatly increasing the probability
of contention and thus duplicate work (i.e. class loader construction).

When there is contention, multiple class loaders are constructed and then preserved by the
scalaInstance task in each project throughout the first task execution.  Only when multiple
scalaInstance tasks execute simultaneously and only during the first execution does this occur.
(Technically, it could still happen later, but it doesn't in practice.)

This means that the number of duplicate class loaders should quickly saturate instead of growing
linearly with the number of projects.  It also means that the impact depends on the exact
tree structure of projects.  A linear chain of dependencies will be unaffected, but a build with
independent leaves may be limited by the number of cores.  The number of cores affects
the number of threads typically used by the task engine, which limits the number of concurrently
executing scalaInstance tasks.

In summary, this might affect the first, cold compilation of a multi-module project with
independent leaves on a multi-core machine with Scala version different from the version used
for sbt.  It might increase the maximum permgen requirements as well as slow the jit compilation
by up to one task execution.  Subsequent compilations should be unaffected and the permgen
utilization return to be as expected.
2013-06-19 21:38:06 -04:00
Mark Harrah 9dce57b9fc remove task key definition from the build since it is now in sbt 2013-06-19 17:14:57 -04:00
Mark Harrah cb3df0982f snapshot version for development 2013-06-06 20:06:07 -04:00
Mark Harrah 6cee9d4aa4 0.13.0-Beta2 2013-06-05 23:57:21 -04:00
Mark Harrah a1f9ac3bc1 build with 0.12.4-RC2 2013-06-05 19:55:24 -04:00
Mark Harrah e83038bed4 Fix issue with JLine dependency.
The reported issue was a JLine class not being found on sbt startup.

JLine was depended on in the sbt build in two places, one with an extra
attribute (component) and one without.  The retrieve pattern used by the
launcher includes that extra attribute.  Previously, the dependency
without the attribute was selected and jline properly ended up on the sbt
classpath.  Now, either by bumping JLine to 2.11 or some other
insignificant change, jline ends up in a subdirectory for the component
and doesn't get on the classpath.

(The move in 0.10 away from retrieving based on patterns and
using things directly from the cache was good, but this can't be
used in the launcher until a hash-based artifact is used so that
sbt+Scala jars aren't deleted or overwritten while sbt runs.)

A secondary issue was that the compiler-interface-src artifact didn't have
a configuration and was therefore not included in the published artifacts.
2013-06-03 22:49:48 -04:00
Mark Harrah 138a5ecd20 stamp-version should fail if current version is a release 2013-06-03 10:36:21 -04:00
Mark Harrah 90d7834c86 snapshot version for development 2013-06-03 10:05:26 -04:00
Mark Harrah 19d75ae2f9 preparation for 0.13.0-Beta1 2013-06-01 10:56:30 -04:00
Mark Harrah 16b9f0a925 2.10.2-RC2 2013-05-30 19:22:17 -04:00
Mark Harrah 8d461953d4 snapshot version 2013-05-06 08:28:34 -04:00
Mark Harrah 5b90eee971 0.13.0-M2 2013-05-05 22:34:59 -04:00
Mark Harrah c3a5042f02 drop httpclient dependency, which wasn't actually being used by Ivy 2013-05-05 15:42:15 -04:00
cheeseng 838b737caa Bump up test-interface dependency to version 1.0-SNAP3. 2013-04-22 14:22:12 +08:00
Mark Harrah ebd24e95df back to a snapshot version 2013-03-18 11:47:45 -04:00
Mark Harrah 26d422fd0c 0.13.0-M1 2013-03-18 10:06:37 -04:00
Mark Harrah 6d4da5e394 precompile against Scala 2.9.3 2013-03-18 10:06:24 -04:00
Mark Harrah 6750ef7614 use Scala 2.10.1 final 2013-03-13 12:40:03 -04:00
Mark Harrah 9eb2406e6c Scala 2.10.1-RC3 2013-03-05 17:22:12 -05:00
Mark Harrah 8c4ebabe19 remove JLine from the launcher
It is no longer necessary for it to be loaded in a stable class loader
and line reading in the launcher does not require anything more advanced
than java.io.Console.readLine(String).
Scala versions 2.8 and later use the version that goes through JAnsi
and for that it is sufficient to have JNA in a stable loader.
2013-02-26 09:27:56 -05:00
Mark Harrah 54c08115f6 JLine now has junit in the proper scope, no need for intransitive() 2013-02-26 09:00:18 -05:00
Alex Dupre 92e99cfef0 Switch from JLine 1.0 to 2.10. 2013-02-26 07:39:33 -05:00
jozic 51728d1ad1 switch dispatch to dispatch.classic to avoid collisions with plugins which use newer versions of dispatch (0.9+) 2013-02-19 08:54:56 -05:00
Mark Harrah 67c459b6a2 -Ymacro-no-expand for API docs 2013-02-13 08:13:50 -05:00
Mark Harrah 76e0a941ba Update to 2.10.1-RC1
Needed an explicit type in PMap to workaround an error.
Need to drop tuple assignment of parser.parsed in input task macro as a workaround
  for macro/resetAllAttrs/pattern matching/annotation issue in RC1.
2013-02-13 07:17:20 -05:00
Mark Harrah 7a3a8bb50b Disable -Xlint for scalac. Too many 'Adapting argument list by creating a 2-tuple' warnings. 2013-02-13 03:25:13 -05:00
Mark Harrah c0b1bb51e6 -Xlint 2013-02-04 17:30:31 -05:00
Eugene Yokota 125727ba83 support binary version in launcher 2013-01-29 16:55:13 -05:00
Mark Harrah 54f461752f Put 2.10+ scalac options behind scalaVersion check. Closes #649. 2013-01-23 12:48:54 -05:00
Paolo G. Giarrusso b0fe85490c Enable Java -Xlint warnings, excluding serialization-related ones 2013-01-22 09:29:03 -05:00
Paolo G. Giarrusso 92d7520f7b Silence boring Eclipse warnings: feature warnings - take #2
Silencing boring warnings allows seeing the interesting ones. Here I've excluded
reflectiveCalls, since that's a useful warning.
However, silencing those warnings in *Eclipse* would require committing Eclipse
projects, something which *will* take extra effort; I verified that the warnings
disappeared from the output of compilation in SBT.
2013-01-22 09:29:03 -05:00
Mark Harrah f4e8ff870b Build: add includeTestDependencies key that can be used to temporarily turn off fetching test dependencies. 2013-01-18 18:49:20 -05:00
Mark Harrah 7bfd24b4d6 build with 0.12.2 2013-01-18 18:49:20 -05:00
Mark Harrah b5587700fd use provisionally published sbinary 2012-12-31 14:06:28 -05:00
Mark Harrah b9a4526bce fix credentials for publishing 2012-12-31 12:42:36 -05:00
Mark Harrah 21fc872493 build: disable API/SXR generation until SI-6812 is resolved 2012-12-31 11:26:19 -05:00
Mark Harrah c358512e0b use 2.10.0 final 2012-12-31 09:23:14 -05:00
Mark Harrah 329b42453b move Eval test to correct location 2012-12-19 10:17:56 -05:00
Grzegorz Kossakowski ae211ee33e Cleanup parameter list of `ScriptedTests`.
All of `sbtVersion`, `defScalaVersion` and `buildScalaVersions` were
not used anymore. According to @harrah they are coming from really
old days of sbt and are not needed because of changes to how sbt
interacts with different Scala versions.
2012-12-14 12:57:47 -05:00
Mark Harrah 1d18532bf0 mark Typesafe repositories as bootOnly, remove Sonatype snapshots now that Scala is resolved by the project 2012-12-09 20:40:41 -05:00
Grzegorz Kossakowski 56dff4855d Follow package structure for generated `ScalaKeywords.scala`.
`ScalaKeywords.scala` is now being generated at location that
follows package structure.
2012-12-07 10:18:34 -08:00
Mark Harrah 214cd62a2a use latest, renamed proguard-base artifact 2012-12-06 07:25:40 -05:00
Mark Harrah 96ddf5b742 move to proguard 4.6 to avoid index out of bounds in variable remapper
upgrading Proguard changed what gets included: now need scala package object, which brings in 100kB more bytecode with it
2012-12-04 21:08:39 -05:00
Mark Harrah 005b2b356f fix IO tests, which needed scala-compiler.jar on the classpath 2012-12-04 13:20:03 -05:00
Josh Suereth 0c08c1169e Bumped the Scalatest/Specs versions for 2.10.0-RC3
* Modified tests to use mutable Specs API
* Fixed a few minor specs issues.
2012-12-04 13:10:09 -05:00
Mark Harrah c1051f1f1e Source dependency on sbinary for 2.10.0-RC* for now 2012-12-03 08:56:55 -05:00
Mark Harrah 46b739aa5a bump to Scala 2.10.0-RC2 2012-11-18 09:18:22 -05:00
Mark Harrah 44e9c26162 bump to 2.10.0-RC1 2012-11-17 20:23:07 -05:00
Mark Harrah 522414cd99 AbsTypeTag -> WeakTypeTag and converted more settings 2012-11-17 20:23:06 -05:00
Mark Harrah 2c7e9cd893 Scala 2.10.0-M7 2012-11-17 20:23:06 -05:00
Mark Harrah ce252cca0d need sbinary published against 2.10 (not in a repo yet) 2012-11-17 20:19:25 -05:00
Mark Harrah 1c22478edc task setting macros for :=, +=, ++=
also, bump to 2.10.0-M6
2012-11-17 20:19:24 -05:00
Mark Harrah 8d6dd10798 2.10.0-M5, different arity generalization
1. KList[M[_]] now instead of KList[HL <: HList, M[_]]
  a. head, tail work properly in this variant
  b. disadvantage is that full type not easily transformed to new type constructor
2. AList abstracts on K[L[x]], a higher order type constructor.
 A. Instances written for:
  a. KList
  b. Seq[M[T]] for a fixed T
  c. TupleN
  d. single values
  e. operate on one type constructor when nested
 B. Main disadvantage is type inference.  It just doesn't happen for K[L[x]].
    This is mitigated by AList being used internally and rarely needing to construct a K.
2012-11-17 20:19:24 -05:00
Mark Harrah eecaeafbdf reorganization of main/
* split several source files
* move base settings sources (Scope, Structure, ...) into main/settings/
* breaks cycles.  In particular, setting system moved from Project to Def
2012-11-17 20:19:24 -05:00
Mark Harrah b2f155fab6 update to latest sbt-site plugin, generate pdf 2012-11-08 22:40:24 -05:00
Mark Harrah ca8bfe2281 precompile against 2.10.0-RC2 2012-11-08 22:40:23 -05:00
Mark Harrah 28d3118d1d Docs: auto-generate /index.html from <version>/docs/home.html and add version selection 2012-10-16 15:01:58 -04:00
Mark Harrah b3b943653b address publishTo warning 2012-10-15 12:42:28 -04:00
Mark Harrah ca9f094b83 use 0.12.1 to build 2012-10-12 10:52:23 -04:00
Mark Harrah 3acc17d259 doc updates, conversions, howto extension, theme from akka 2012-09-30 20:36:38 -04:00
Mark Harrah 369655391f first step at integrating documentation into build 2012-09-30 20:36:37 -04:00
Mark Harrah 46ac72ab40 version bumps 2012-08-01 09:32:48 -04:00
Mark Harrah 51da95644c methods for working with Scala identifiers 2012-07-13 14:33:27 -04:00
Mark Harrah f48a10e136 precompile interface against 2.10.0-M5 2012-07-13 14:33:26 -04:00
Eugene Vigdorchik a6c2054292 Break compiler dependency from 'collection' project. 2012-07-13 14:33:26 -04:00
Mark Harrah 8843458291 isolate task-system and ivy tests 2012-07-01 15:16:42 -04:00
Mark Harrah 79bab4727a fix caching of xsbt.version.properties 2012-07-01 15:16:41 -04:00
Mark Harrah 5539693cc3 precompile for 2.10.0-M4 2012-06-18 08:18:39 -04:00
Mark Harrah 322b2d5adc precompile compiler interface against 2.10.0-M3 2012-05-30 07:13:15 -04:00
Mark Harrah 9e775092d2 revert snapshot regex changes 2012-05-30 07:13:15 -04:00
Mark Harrah a8a028ad70 add missing token in scripted tab completion 2012-05-30 07:13:15 -04:00
Mark Harrah 2f65945745 tweak status test in build definition 2012-05-27 20:03:09 -04:00
Mark Harrah c62dd99ddf tab complete scripted tests 2012-05-19 18:20:20 -04:00
Mark Harrah 062b47ac8d better invalidation of interface version.properties file 2012-05-13 21:31:40 -04:00
Mark Harrah 3f92b33350 bump to Ivy 2.3.0-RC1 2012-05-02 19:56:35 -04:00
Mark Harrah d837f869bd using some of the embedding interfaces 2012-04-18 11:02:52 -04:00
Mark Harrah 8594e4443d reorganize compilation modules 2012-04-18 08:08:25 -04:00
Mark Harrah db7ec09591 move compiler integration classes to subproject compile/integration 2012-04-18 03:33:49 -04:00
Mark Harrah 70f2d56604 revert publishing poms: two different metadata representations results in incorrect dependencies 2012-04-14 20:22:11 -04:00
Mark Harrah 56d8432682 0.13 branch for new development 2012-04-13 18:33:00 -04:00
Mark Harrah e9bfcdfc58 0.12.0-Beta 2012-04-13 18:21:05 -04:00
Mark Harrah 13d3e7dde3 update to Scala 2.9.2 2012-04-13 17:47:12 -04:00
Mark Harrah f94eae15b6 merge test forking from vigdorchik/xsbt/wip_fork_test 2012-04-06 20:48:31 -04:00
Peter Vlugter 0b1297d65f Publish poms for maven friendliness
This allows an artifactory virtual repo to serve sbt maven-style
2012-04-05 15:05:13 +12:00
Eugene Vigdorchik 7afc9e77c6 \'fork in test\' initial implementation. 2012-04-01 11:44:05 +04:00
Mark Harrah b48c087a91 bump jsch version to 0.1.46. fixes #403 2012-03-17 19:31:56 -04:00
Mark Harrah 7dd2ec74d4 precompile against 2.10.0-M2 2012-03-17 19:31:55 -04:00
Mark Harrah 04966c887d bump versions 2012-03-14 21:01:38 -04:00
Mark Harrah 63e047d3d7 0.12.0-M2 2012-03-14 20:39:02 -04:00
Jason Zaugg d422b5cb8f Scripted test for a macro def in a source file.
Needed to increase MaxPermSize, otherwise I was unable to run this test on Java 1.6.0_29 64bit Server on Mac OS.
2012-03-04 22:51:57 +01:00
Mark Harrah edf7cb228c fix build 2012-02-21 22:47:07 -05:00
Mark Harrah 094bc7c7a5 version bump 2012-02-19 22:41:26 -05:00
Mark Harrah 95debe52cb milestone version 2012-02-19 22:41:26 -05:00
Mark Harrah b03416b37d push milestones to ivy-releases instead of ivy-snapshots 2012-02-19 22:41:26 -05:00
Mark Harrah 7b31db4171 no cross versioning for sbt 2012-02-04 21:10:30 -05:00
Mark Harrah 98c98f9c26 split command core to main/command/ 2012-01-29 14:36:27 -05:00
Mark Harrah 30cca3a6d0 fix launcher options addition to use array for cross-version compatibility 2012-01-22 22:06:53 -05:00
Mark Harrah 2255bd5a62 org.scala-tools.sbt -> org.scala-sbt and dropping scala-tools.org from defaults 2012-01-22 22:06:52 -05:00
Mark Harrah c8c15c7eeb version bump 2012-01-15 13:07:17 -05:00
Mark Harrah 66505d0b4a bump to jline 1.0, which looks compatible with 0.9.94, but cleans up after more streams properly 2012-01-14 21:09:11 -05:00