commit 33e98e1869c64ad277130807afe989988e83063c Author: Stu Hood Date: Tue Jul 18 16:50:30 2017 -0700 Zinc 1.0.0-X20 upgrade: JVM portion (#4728) ### Problem Pants is on an older version of zinc (one that does not use class-based name-hashing), and the modern zinc project is moving quickly thanks to @jvican and others. We had previously been on `X7` but it was reverted in #4510 because benchmarks showed that no incremental compilation was happening for scala code. ### Solution * Upgrade to zinc `1.0.0-X20` * Use the zinc `AnalysisMappers` API described on #4513 to make analysis files portable without parsing * Extract options parsing out of the `Settings` object and into its own module, to allow for reuse in multiple binary entrypoints * Refactor and split our zinc wrapper into `zinc-compiler` and `zinc-extractor` to support parsing the `product_deps_by_src` and `classes_by_source` products directly (in order to move toward making analysis a black box) * Switch to usage of new builder-pattern APIs for constructing zinc objects * Remove the `Loggers`/`Reporters` facades in favor of built in support for filtering log messages ### Result The new version of the zinc wrapper correctly supports incremental compile (with the exception of https://github.com/sbt/zinc/issues/355), and the python portions of pants no longer require any internal knowledge of zinc analysis. The python half of this change will remove that code. src/scala/org/pantsbuild/zinc/util/Util.scala | 259 ++++++++++++++++++++++++++ 1 file changed, 259 insertions(+)