Skip to content


Subversion checkout URL

You can clone with
Download ZIP
sbt's scala incremental compiler
Scala C Shell

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Zinc is a stand-alone version of sbt's incremental compiler.


Zinc is built using sbt 0.11.3. To create the full distribution:

sbt dist/create

Published distributions can be found in the zinc repo.


To get information about options run zinc -help.


As for scalac the main options for compiling are -classpath for specifying the classpath elements, and -d for selecting the output directory. Anything passed on the command-line that is not an option is considered to be a source file.


Zinc needs to locate the Scala compiler jar, Scala library jar, and any extra Scala jars (like Scala reflect). There are three alternative ways to specify the Scala jars.

Using -scala-home point to the base directory of a Scala distribution (which needs to contain a lib directory with the Scala jars).

Using -scala-path the compiler, library, and any extra jars (like scala reflect) can be listed directly as a path.

Using -scala-library to directly specify the Scala library, -scala-compiler to specify the Scala compiler, and -scala-extra to specify any extra Scala jars.

If no options are passed to locate a version of Scala then Scala 2.9.2 is used by default (which is bundled with zinc).

To pass options to scalac simply prefix with -S. For example, deprecation warnings can be enabled with -S-deprecation.


To select a different javac to compile Java sources, use the -java-home option. To pass options to javac, prefix with -J.

If mixed Java and Scala sources are being compiled then the compile order can be specified with -compile-order, where the available orders are Mixed, JavaThenScala, or ScalaThenJava. The default order is Mixed.

If only Java sources are being compiled then the -java-only option can be added to avoid the Scala library jar being automatically added to the classpath.


Zinc comes with built-in Nailgun integration. Running with Nailgun provides zinc as a server, communicating commands via a client, keeping cached compilers in a warm running JVM and avoiding startup and load times.

To run zinc as a build daemon add the -nailed option to all commands, or alias zinc="zinc -nailed".

Nailgun client binaries for common platforms are bundled with zinc. If an ng client is on the current path then this will be used instead.

To shutdown the zinc server run zinc -shutdown. To list currently cached zinc compilers use zinc -status.


The log level can be set directly with -log-level debug|info|warn|error. Or to set to debug use -debug. To silence all logging use -quiet.


The analysis used to determine which files to incrementally recompile is stored in a file. The default location for the analysis cache is relative to the output directory. To specify a different location for the analysis cache use the -analysis-cache option. When compiling multiple projects, and the analysis cache is not at the default location, then a mapping from output directory to cache file for any upstreams projects should also be provided with the -analysis-map option.


Copyright 2012 Typesafe, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at:

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Something went wrong with that request. Please try again.