CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-pantsbuild--zinc

Zinc is a standalone version of sbt's incremental compiler meant to be run in nailgun.

Pending
Overview
Eval results
Files

compiler-management.mddocs/

Compiler Management

Core compiler creation, caching, and incremental compilation execution functionality.

Capabilities

Compiler Factory Methods

Factory methods for creating and managing compiler instances with caching support.

/**
 * Get or create cached compiler instance
 * @param setup Compiler configuration and jar locations
 * @param log Logger for compilation messages
 * @return Compiler instance (cached or newly created)
 */
def apply(setup: Setup, log: Logger): Compiler

/**
 * Java API for getting or creating compiler instance
 * @param setup Compiler configuration and jar locations
 * @param log Logger for compilation messages
 * @return Compiler instance (cached or newly created)
 */
def getOrCreate(setup: Setup, log: Logger): Compiler

/**
 * Create new compiler instance (bypassing cache)
 * @param setup Compiler configuration and jar locations
 * @param log Logger for compilation messages
 * @return New compiler instance
 */
def create(setup: Setup, log: Logger): Compiler

Scala Compiler Creation

Create Scala compiler instances with proper configuration.

/**
 * Create new Scala compiler instance
 * @param instance Scala instance with compiler jars
 * @param interfaceJar Compiler interface jar file
 * @return Analyzing compiler for Scala compilation
 */
def newScalaCompiler(instance: ScalaInstance, interfaceJar: File): AnalyzingCompiler

Java Compiler Creation

Create Java compiler instances for mixed compilation.

/**
 * Create new Java compiler instance
 * @param instance Scala instance for compatibility
 * @param javaHome Optional Java home directory
 * @param fork Whether to fork Java compiler process
 * @return Java compiler instance
 */
def newJavaCompiler(instance: ScalaInstance, javaHome: Option[File], fork: Boolean): JavaCompiler

Compiler Cache Management

Create and manage compiler caches for performance optimization.

/**
 * Create resident compiler cache
 * @param maxCompilers Maximum number of cached compilers
 * @return Globals cache for compiler instances
 */
def createResidentCache(maxCompilers: Int): GlobalsCache

Scala Instance Management

Manage Scala compiler instances and classloaders.

/**
 * Create Scala instance from setup configuration
 * @param setup Setup containing Scala jar locations
 * @return Scala instance for compilation
 */
def scalaInstance(setup: Setup): ScalaInstance

/**
 * Create Scala classloader from jar files
 * @param jars Scala jar files (compiler, library, extras)
 * @return URL classloader for Scala classes
 */
def scalaLoader(jars: Seq[File]): URLClassLoader

/**
 * Extract Scala version from classloader
 * @param scalaLoader Scala classloader
 * @return Optional Scala version string
 */
def scalaVersion(scalaLoader: ClassLoader): Option[String]

Compiler Interface Management

Manage compiler interface compilation and caching.

/**
 * Get or compile compiler interface
 * @param setup Setup with interface source location
 * @param scalaInstance Scala instance for compilation
 * @param log Logger for interface compilation
 * @return Compiled interface jar file
 */
def compilerInterface(setup: Setup, scalaInstance: ScalaInstance, log: Logger): File

/**
 * Generate interface identifier for caching
 * @param scalaVersion Scala version string
 * @return Interface identifier string
 */
def interfaceId(scalaVersion: String): String

Compilation Execution

Execute incremental compilation with full configuration.

/**
 * Execute incremental compilation
 * @param inputs Compilation inputs (sources, classpath, options)
 * @param cwd Optional working directory
 * @param reporter Reporter for compilation messages and errors
 * @param progress Progress tracker for compilation phases
 * @param log Logger for compilation messages
 */
def compile(inputs: Inputs, cwd: Option[File], reporter: xsbti.Reporter, 
            progress: xsbti.compile.CompileProgress)(log: Logger): Unit

Classpath Management

Automatic classpath generation for compilation.

/**
 * Generate automatic compilation classpath
 * @param classesDirectory Output directory for compiled classes
 * @param allScalaJars All Scala-related jar files
 * @param javaOnly Whether this is Java-only compilation
 * @param classpath Base classpath entries
 * @return Complete classpath for compilation
 */
def autoClasspath(classesDirectory: File, allScalaJars: Seq[File], 
                  javaOnly: Boolean, classpath: Seq[File]): Seq[File]

Usage Examples

import org.pantsbuild.zinc._
import org.pantsbuild.zinc.logging._
import java.io.File

// Create compiler setup
val settings = Settings.parse(args.toSeq).get
val setup = Setup(settings)
val log = Loggers.create(Level.Info, color = true)

// Get cached compiler instance
val compiler = Compiler(setup, log)

// Prepare compilation inputs
val inputs = Inputs(log, settings)
val reporter = Reporters.create(log, Seq.empty, Seq.empty)
val progress = new SimpleCompileProgress(true, true, 10, log)

// Execute compilation
compiler.compile(inputs, Some(new File(".")), reporter, progress)(log)

Constants

val CompilerInterfaceId: String  // Default compiler interface identifier
val JavaClassVersion: String     // Java class version requirement

Install with Tessl CLI

npx tessl i tessl/maven-org-pantsbuild--zinc

docs

analysis-caching.md

compiler-management.md

configuration.md

index.md

logging-reporting.md

main-entry.md

utilities.md

tile.json