All Projects → sbt → Zinc

sbt / Zinc

Licence: apache-2.0
Scala incremental compiler library, originally part of sbt

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Zinc

Cranelift
Cranelift code generator
Stars: ✭ 2,485 (+910.16%)
Mutual labels:  compiler
Vbuild
"Compile" your VueJS components (sfc/*.vue) to standalone html/js/css ... python only (no need of nodejs). Support python components too !
Stars: ✭ 236 (-4.07%)
Mutual labels:  compiler
Vuepack
Publish .vue files in NPM packages
Stars: ✭ 242 (-1.63%)
Mutual labels:  compiler
Sbt Tpolecat
scalac options for the enlightened
Stars: ✭ 227 (-7.72%)
Mutual labels:  sbt
Ts Llvm
TypeScript to LLVM compiler (abandoned)
Stars: ✭ 230 (-6.5%)
Mutual labels:  compiler
Cproc
C11 compiler (mirror)
Stars: ✭ 238 (-3.25%)
Mutual labels:  compiler
Lfortran
Official mirror of https://gitlab.com/lfortran/lfortran. Please submit pull requests (PR) there. Any PR sent here will be closed automatically.
Stars: ✭ 220 (-10.57%)
Mutual labels:  compiler
Ensime Sbt
Generates .ensime config files for SBT projects
Stars: ✭ 244 (-0.81%)
Mutual labels:  sbt
Gwion
🎵 strongly-timed musical programming language
Stars: ✭ 235 (-4.47%)
Mutual labels:  compiler
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+1039.02%)
Mutual labels:  compiler
Swift Lispkit
Interpreter framework for Lisp-based extension and scripting languages on macOS and iOS. LispKit is based on the R7RS standard for Scheme. Its compiler generates bytecode for a virtual machine. LispKit is fully implemented in Swift 5.
Stars: ✭ 228 (-7.32%)
Mutual labels:  compiler
Sbt Fresh
sbt-plugin to create an opinionated fresh sbt project
Stars: ✭ 229 (-6.91%)
Mutual labels:  sbt
Adlik
Adlik: Toolkit for Accelerating Deep Learning Inference
Stars: ✭ 237 (-3.66%)
Mutual labels:  compiler
Flint
The Flint Programming Language for Smart Contracts
Stars: ✭ 228 (-7.32%)
Mutual labels:  compiler
Asmjit
Machine code generation for C++
Stars: ✭ 2,874 (+1068.29%)
Mutual labels:  compiler
Reposilite
Lightweight repository management software dedicated for the Maven based artifacts (formerly NanoMaven) 📦
Stars: ✭ 222 (-9.76%)
Mutual labels:  sbt
Mond
A scripting language for .NET Core
Stars: ✭ 237 (-3.66%)
Mutual labels:  compiler
Fsharp
The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
Stars: ✭ 2,966 (+1105.69%)
Mutual labels:  compiler
Sbt Dynver
An sbt plugin to dynamically set your version from git
Stars: ✭ 243 (-1.22%)
Mutual labels:  sbt
Create Your Own Lang With Rust
Create your own programming language with Rust (WIP)
Stars: ✭ 236 (-4.07%)
Mutual labels:  compiler

Zinc

Build Status

Zinc is the incremental compiler for Scala. Most Scala developers use it daily without noticing -- it's embedded in key build tools like sbt, CBT and pants.

The primary goal of Zinc is to make your compilation times faster without sacrificing correctness. When you change a source file, Zinc analyses the dependencies of your code and compiles the minimum subset of source files affected by your change. The generated code should be identical to the output of a clean compile.

History

Originally this project was part of sbt, referred to as the incremental compiler module of sbt.

To allow for build tools outside of sbt to use it, the project typesafehub/zinc was created to re-export the whole of sbt to utilise the incremental compiler module.

With the effort for sbt 1, the sbt team extracted the incremental compiler from the sbt repo, to the sbt/zinc repo, recycling the name "zinc".

This new repository is an effort driven by Lightbend to allow any build tool use the Scala incremental compiler, as sbt 1.0, pants, bazel, cbt, Intellij, Scala IDE and Maven Plugin.

Current status

The Zinc 1.0 incremental compiler implements significant improvements over 0.13.13's version when it comes to performance, correctness and dependency analysis.

Zinc 1.0 is already in use in many tools in the Scala ecosystem like sbt, Bloop, Pants, Bazel, and Maven. If you want to create your own integration, you have two options:

  1. Interface directly with Zinc APIs and maintain your own integration.
  2. Use Bloop (which has a compilation server that simplifies tooling integrations).

Installation and use

If you're a build tool author, add it to your project with:

libraryDependencies += "org.scala-sbt" %% "zinc" % "$ZINC_VERSION"

where $ZINC_VERSION is the latest tag pushed to the GitHub repository.

Code of conduct

All communication in sbt/* repositories, including Zinc, and Gitter chat rooms such as sbt/zinc-contrib are covered by Lightbend Community Code of Conduct. Please be kind and courteous to each other.

Contributing

This project is maintained by Lightbend, the Scala Center and other OSS contributors.

You're welcome to contribute to this repository. For information on how to contribute, please check the CONTRIBUTING guide.

This software is released under the following LICENSE.

Note to compiler bridge authors

The compiler bridge classes are loaded using java.util.ServiceLoader. In other words, the class implementing xsbti.compile.CompilerInterface2 must be mentioned in a file named: /META-INF/services/xsbti.compile.CompilerInterface2.

Acknowledgements

Logo Acknowledgement
We thank Yourkit for supporting this open-source project with its full-featured profiler.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].