Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


⛔️ [DEPRECATED] sbt's scala incremental compiler

Subscribe to updates I use zinc

Statistics on zinc

Number of watchers on Github 306
Number of open issues 13
Average time to close an issue 4 months
Main language Scala
Average time to merge a PR 7 days
Open pull requests 3+
Closed pull requests 14+
Last commit over 2 years ago
Repo Created over 7 years ago
Repo Last Updated over 1 year ago
Size 519 KB
Organization / Authortypesafehub
Page Updated
Do you use zinc? Leave a review!
View open issues (13)
View zinc activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating zinc for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


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

Download the latest stable version.


Attention: There is a new effort concerning the development of zinc, which is hosted at sbt zinc.

Zinc is currently in a maintenance mode. There's no active development of new features. New releases are meant to stay up-to-date with latest sbt releases. Zinc tries to follow final releases of sbt. It doesn't follow milestone releases but exceptions can be introduced on a case-by-case basis.

Maintenance of zinc is performed on a best-effort terms. We try our best to not lag behind sbt with zinc releases but we do not guarantee it. Occasional delays can happen due to other priorities.

If you are interested in helping with zinc maintenance or development, please contact Adriaan Moors (@adriaanm) at Lightbend.


Zinc is built using sbt 0.13. See

Previously published distributions up to 0.3.1-M1 relase can be found in the old zinc repo. Newer distributions are hosted under [Lightbend downloads].

Here's the table of final releases in 0.3.x series:

zinc version sbt version Download
0.3.13 0.13.13 zinc-0.3.13.tgz
0.3.12 0.13.12 zinc-0.3.12.tgz
0.3.11 0.13.11 zinc-0.3.11.tgz
0.3.9 0.13.9 zinc-0.3.9.tgz zinc-
0.3.8 0.13.8 zinc-0.3.8.tgz
0.3.7 0.13.7 zinc-0.3.7.tgz
0.3.6 0.13.6 zinc-0.3.6.tgz 0.13.5 zinc- 0.13.5 zinc- 0.13.5 zinc-
0.3.5 0.13.5 zinc-0.3.5.tgz
0.3.2 0.13.2 zinc-0.3.2.tgz
0.3.1 0.13.1 zinc-0.3.1.tgz
0.3.0 0.13.0 zinc-0.3.0.tgz


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. For multi-part options add the -S prefix to all parts. For example, the sourcepath option can be specified with -S-sourcepath -S/the/source/path.


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

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.

Incremental Compiler

There are options for configuring the incremental compiler. One useful option is -transactional, which will restore the previous class files on compilation failure. This allows fixes to be made before retrying incremental compilation, rather than forcing recompilation of larger parts of the source tree due to the error and deleted class files.

See zinc -help for information about all options.


Contributions via GitHub pull requests are gladly accepted from their original author. Before we can accept pull requests, you will need to agree to the Lightbend Contributor License Agreement online, using your GitHub account.


Copyright 2012 Lightbend, 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.

zinc open issues Ask a question     (View All Issues)
  • almost 3 years Upgrade to SBT 0.13.13 and profit from performance improvements
  • about 3 years Use nio instead of io
  • over 4 years Deprecation warnings in sbt build definition
  • over 4 years Analysis split, merge, rebase and reload operations fail when name hashing is enabled
  • almost 5 years Add an option to start zinc in the foreground
  • almost 5 years use `-scala-home` from `$SCALA_HOME` environment variable, if it exists
  • almost 5 years Compilation error details
  • about 5 years Fail fast for long compilation times
  • over 5 years Zink should only listen on and ::1
  • almost 6 years Use builder pattern for Java APIs
  • almost 6 years Support larger # of source files
  • over 7 years Windows friendliness
zinc open pull requests (View All Pulls)
  • Add more recent scala/jdk versions and enhance travisCI build process ( PR#97)
  • Update
  • Add server parameter to control address Nailgun server binds to
zinc questions on Stackoverflow (View All Questions)
  • MDM Zinc Flash Database 'Undefined'
  • How to build and run zinc (scala incremental compiler) on ubuntu
  • How can one invoke sbt's zinc incremental compiler on Windows 7?
  • Zinc server (scala incremental compiler) on Windows?
  • What is the difference between these web servers in Seaside: Zinc, Kom, and Swazoo?
  • serving using zinc and pharo
  • Actionscript 3 and MDM Zinc
  • Zinc error on Team City agent
  • A Zinc (4.x) application can't be opened from CD, but can open from desktop in Mac
  • Good alternative for Adobe AIR and Zinc in Flash 10 + AS 2.0
  • How can I save a photo into a folder with mdm zinc in flash?
  • How to run Comet with Zinc (Seaside)
  • Zinc HTTP Components and VisualWorks
  • Javac not on path when running maven with the zinc incremental compiler (scala maven plugin) as a service
  • How do I launch a .exe file with a button click from a menu inside a Zinc 4.0 built flash project
  • Create Context Menu with MDM Zinc
  • MDM Zinc - Run desktop app in fullscreen
  • MDM Zinc - Make window resizeable
  • Is it possible to change the visibility of a window in MDM Zinc 4?
  • Validation issue with MDM Zinc and the Apple App Store
  • Dual Screen Application using Zinc
  • Close form with zinc
  • Curry compiler zinc cannot be configured
zinc list of languages used
Other projects in Scala