summaryrefslogtreecommitdiffstats
path: root/build/conf/java.conf
Commit message (Collapse)AuthorAgeFilesLines
* classpath.clash: move from compilation modules to test/runnableiniklyaev2026-07-081-1/+266
| | | | | | | | | | | | | | | | | | | | | | ## What Move the `classpath.clash` check from compilation modules to runnable/test modules, so it validates the *real* runtime classpath. ## Why - Checking the classpath on compilation modules (`JAR_LIBRARY`) misses clashes introduced only at runtime/test time (e.g. deps pulled via `JAVA_RUNTIME_PEERDIR`). Running the check on runnable/test modules makes it complete. - Required for the java build acceleration project (ijar splitting). ## What changed - `build/conf/java.conf`, `build/plugins/java.py`: - `_ADD_CLASSPATH_CLASH_CHECK()` is moved from `JAR_LIBRARY` to test (`_JAR_TEST`) and runnable modules. - New macros `_ADD_CLASSPATH_CLASH_CHECK_IF_UBERJAR` / `_ADD_CLASSPATH_CLASH_CHECK_IF_NOT_UBERJAR` bind the check to either `JAR_RUNNABLE` or `JAR_COMPILATION` on `MAKE_UBERJAR_VALUE` (since uberjar packs deps into the jar, clash test should be run in compilation module). - Added `JTEST_JCOMMANDER_IGNORE_CLASSPATH_CLASH` and `JTEST_GSON_IGNORE_CLASSPATH_CLASH` variables listing the classes brought by the JTEST `DEPENDENCY_MANAGEMENT` (jcommander 1.72 / gson 2.10.1) that the more complete check now surfaces. - Per-module `ya.make`: added `JAVA_IGNORE_CLASSPATH_CLASH_FOR(...)` referencing the relevant variable(s) for modules where the more complete check found pre-existing clashes. These are real clashes; the ignores are temporary and each carries a `TODO` to fix and remove. commit_hash:3527a2c1e6a461cd1dc7491d6d973a12d1baaedb
* conf var feature flag (__NO_UID__) + shallow root-based cache diriniklyaev2026-07-021-3/+15
| | | | | | | | | | **Feature-flag the persistent javac/kotlinc daemon and relocate its runtime dir to SHALLOW_ROOT** The javac/kotlinc daemon is now opt-in via `ya make -DYA_JAVAC_DAEMON` (default off). Toggling it does not change node UIDs; enabling/disabling the daemon never invalidates the build cache. The daemon's runtime dir (jar \+ logs) moves from `/tmp` to ya's `$(SHALLOW_ROOT)` via `YA_JAVAC_DAEMON_HOME`, so it works in environments where `/tmp` is unwanted. The unix socket stays in `/tmp` because of the AF_UNIX path limit; the socket name gains the jar hash to distinguish daemon versions across protocol changes. This code is LLM-generated. commit_hash:179a98b265f6458d04a6bf6c7d02721c90cc355b
* Javac/kotlinc daemon [AI generated]iniklyaev2026-06-301-2/+4
| | | | | | | | | | | | | **Persistent javac/kotlinc compilation daemon for `ya make` (opt-in)** **Note:** the code in this PR was generated mostly by an LLM. This PR adds an opt-in persistent compilation daemon that runs `javac` and `kotlinc` in-process inside a long-lived JVM, instead of spawning a fresh subprocess per build node. Each Java/Kotlin module today pays the full JVM \+ compiler startup cost (\~150–340 ms of startup, plus \~55 MB of kotlinc class-loading) on every node, which dominates the wall time of short compiles; amortizing that startup across all nodes in a build session yields measurable speedups (1.3x–3.7x CPU economy on the benchmarked targets, with zero correctness fallbacks or failed nodes). The daemon (`devtools/buildstep_tools/javac_daemon`, a `JAVA_PROGRAM` built to a committed `JavacDaemon.jar`) listens on a Unix domain socket and runs both compilers concurrently; a thin Python client in the existing build scripts (`javac_daemon_client.py`, wired into `run_javac.py` / `compile_java.py` via `build/conf/java.conf`) decides per-node eligibility, routes launcher flags, selects/launches the right daemon instance, and **always falls back to a plain subprocess** on any doubt (old JDK, resource JVM flag, denied annotation processor, daemon error), so build correctness never depends on the daemon. The feature is **off by default** and activated only via `YA_JAVAC_DAEMON=1` passed to `ya make`; without it the build uses the existing subprocess path unchanged. See `junk/iniklyaev/javac-daemon/DESIGN_javac_daemon.md` for the full design, flag-routing rules, fault-isolation model, and benchmark methodology. commit_hash:f4e07c5bb51064e0bc24539348e01a85ff63a835
* Same as in ya make errorprone in ya ide gradledimdim112026-06-241-4/+5
| | | | | Fix errorprone in ya ide gradle commit_hash:e9869d6c2b58ed137b3864a90c7c1f86c9a5ef66
* Add semantic for excludes in setsdimdim112026-06-231-2/+2
| | | | | Add semantic for excludes in sets commit_hash:c7c3877e0d8d06cef8e94ab3eecda7863ab4ae6a
* Use FILES in JAVA_SRCS as Globs in ya ide gradledimdim112026-06-151-1/+1
| | | | | Use FILES in JAVA_SRCS as Globs in ya ide gradle commit_hash:29b0f3bf3e1dfe334ccf90a9393104d6fd68f5d0
* Disable Java Annotation Processing by defaultdimdim112026-06-011-1/+1
| | | | commit_hash:b1d2bd3f39ea9039fb7bd70d18f20ff7cad737d2
* ijar conf part (not used now)iniklyaev2026-05-261-9/+63
| | | | commit_hash:645e2e2b7678df55116f758a92a38e5e2c6484a4
* Remove warning on errorprone on JDK11 (library/java/annotation)pazus2026-04-281-5/+5
| | | | commit_hash:8752a3e8d1f26635c499b914b852ad9f6ee5dfa4
* Поддержать bytecode Java 25 в компиляции Kotlinpazus2026-04-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | | <section id="quibbler-autodescription"> #### Поддержка bytecode Java 25 в компиляции Kotlin 📝 - 🔄 Обновлена логика определения целевой версии JVM для Kotlin: при использовании JDK 26 теперь устанавливается целевая версия 25, вместо ранее используемой версии 24. - 🛠 Исправлена логика сопоставления версий JDK и целевой версии Kotlin: теперь версия 25 и выше соответствует целевой версии 25, а не 24. - 🧪 Обновлена тестовая конфигурация: изменена версия JDK в тестах с 24 на 25 для соответствия новой логике. <a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a> </section> #### Поддержка bytecode Java 25 в компиляции Kotlin 📝 - 🔄 Обновлено указание версии JDK с 24 на 25 для корректной компиляции проектов с использованием Java 25. - 🧠 Настроена поддержка Java 25 в компиляторе Kotlin, чтобы он генерировал байт-код, совместимый с этой версией JDK. - 🔧 Исправлена логика определения целевой версии JVM для Kotlin при использовании JDK 26, теперь она указывает на версию 25. - 🧪 Обновлена версия JDK в тестовой конфигурации с 24 на 25. <a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a> commit_hash:ed2d6f419f387b3853f491bf71c6544ff78be5d2
* Add Java 26 support to Arcadiarobot-javacom2026-04-161-5/+23
| | | | | | Support Java 26 in build/test/uberjar packaging in ya.make <https://nda.ya.ru/t/KrSYyO6u7ZafNd> commit_hash:3a488935d6801a40d6781e73db65507d563e5eac
* set required_jdk to a variable instead of plain valueiniklyaev2026-03-171-1/+1
| | | | commit_hash:bda5345b24376264b1e1d6474f9797688bd78844
* ErrorProne 2.47.0 for Java 24+miroslav22026-03-041-3/+3
| | | | commit_hash:ade0dfc912b5ba20c5ec6bec0d70f16c765deb63
* Upgrade to JUnit 6.0.2miroslav22026-02-271-0/+1
| | | | | * fixing bug in 6.0.0: https://github.com/junit-team/junit-framework/issues/5102 commit_hash:eadf8a5bf7b3ab6a18e293ce5b6921b8de66ba0d
* ErrorProne 2.44.0 for Java 24+miroslav22026-02-271-3/+3
| | | | commit_hash:149c1ae291e3d36e575da998f65e61592450767e
* Update to Kotlin version 2.3.10robot-javacom2026-02-261-5/+5
| | | | commit_hash:5ab82c3d88d30afb83605c695328d4333d5adb0a
* Support SYSTEM_PROPERTIES macrodimdim112026-02-201-1/+3
| | | | commit_hash:a4941df2884ca8613a9f365500112c564c6ba363
* Remove kotlin compilation warningpazus2026-02-161-1/+1
| | | | commit_hash:44bba6229e44c6c9edef93e123e882b77945a4d9
* Support transitive JNI through JAVA_LIBRARYdimdim112026-02-061-0/+4
| | | | commit_hash:161319595b231a155b0f9706546cef7f786236d8
* Refactor RUN_JAVA_PROGRAM semanticsdimdim112026-01-161-1/+1
| | | | commit_hash:e4365ca29da53491cdfcd5a8a094785132f20bf7
* Convert leftover `late_out`s to the proper formvpozdyayev2025-12-241-3/+9
| | | | commit_hash:196d6a01eedff1fae0280a7b780793b9f42c99f5
* Drop deprecated "context" mod usagevpozdyayev2025-12-191-2/+2
| | | | commit_hash:9f4602d9122e664a9afaae7cd634767295d90c70
* Migrate -Xjvm-default to -jvm-default flag [Ставьте стикишип]pazus2025-12-071-2/+2
| | | | commit_hash:fabb8eb2d763b5925e18b91f9e1af30540ba60f5
* Use new semantics for AP/KAPTdimdim112025-12-031-2/+2
| | | | commit_hash:d58cdd1fa782e43bf9c8c1f1ad5f1ae5c467bde6
* Fix semantics typodimdim112025-11-291-1/+1
| | | | commit_hash:31291b3e6c26273e724fe4dbcd734923e685a5e8
* Support export ENV in RUN_JAVA_PROGRAM and RUN_PROGRAMdimdim112025-11-281-2/+2
| | | | commit_hash:58865ffea05729d4396cfb67fc089cf6043a5180
* Update to Kotlin version 2.2.21robot-javacom2025-11-281-5/+5
| | | | commit_hash:aca48ff9cb1979067e868408da20f2db1c7162c2
* Add ENV support for RUN_JAVA_PROGRAMsvidyuk2025-11-271-2/+2
| | | | commit_hash:f1f7519c459d853e645b6088ac206765519afa9b
* fix trigger for KOTLINC_ENABLE_NATIVE_ACCESSsnermolaev2025-11-201-0/+1
| | | | commit_hash:5c8559ea37b8b1aae0db551602c4bf812b147a33
* Убрать варнинг про --enable-native-access=ALL-UNNAMED при ↵pazus2025-11-171-1/+9
| | | | | | компиляции kotlin commit_hash:e2f48fa70dbfdee54baf2880c00e56cf96ccf65b
* Proto plugins semanticsdimdim112025-11-141-0/+1
| | | | commit_hash:66c561594268435c46e184e51157219548b35c61
* Fix KAPT semantcisdimdim112025-11-121-3/+4
| | | | commit_hash:542a7acfa2562932bc0bf429ec1bcbd616d6f9d1
* Kotlin 2.2.21 – Fix detekt-cli to use its own kotlincpazus2025-11-111-1/+41
| | | | | | | | | | | | | | | #### Обновление Detekt CLI для работы с собственным компилятором Kotlin 📝 - 🛠️ Заменён способ подключения Detekt CLI: вместо кастомной обёртки используется официальный модуль detekt-cli версии 1.23.8 из contrib. - 🧱 Изменён класс запуска Detekt с внутреннего (`ru.yandex.pcode.detekt.DetektValidateKt`) на стандартный CLI-класс из библиотеки (`io.gitlab.arturbosch.detekt.cli.Main`). - ⚙️ Внесены изменения в систему сборки, чтобы корректно поддерживать запуск Detekt CLI с зависимостями из contrib. - 📦 Добавлен новый модуль сборки `_JAR_CONTRIB_RUNNABLE`, обеспечивающий правильную работу Java-программ из contrib с класспасом и генерацией скриптов. - 🧹 Удалена ссылка на старую обёртку Detekt в основной конфигурации проекта. <a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a> #| || **<a href="https://nda.ya.ru/t/Rgy1Tp7_7Mm3JA" target="_blank">![](https://nda.ya.ru/t/mAiQIjHx7Mm3JC =30x) Echo tests</a>** || |# commit_hash:10459bffa21e7fd62e11654e7b0819cf3dec908a
* Add glob restrictions for skipped filesdimdim112025-11-101-2/+2
| | | | | | | | | | | | | | | | | | <section id="quibbler-autodescription"> #### Добавление ограничений на пропущенные файлы в glob-шаблонах 📝 - 🔧 Добавлены параметры `SKIPPED_MIN_MATCHES` и `SKIPPED_ERROR_PERCENT` в макросах `_GLOB` и `_LATE_GLOB` для контроля количества пропущенных файлов при сборке. Это позволяет избежать ситуаций, когда значительная часть файлов находится на диске, но отбрасывается. - ⚙️ Для большинства конфигурационных файлов установлены единые значения: минимальное количество файлов — 2000, порог ошибки — 90%. Это означает, что если пропущено более 90% от количества файлов (если найдено минимум 2000 файлов), сборка завершится с ошибкой по ограничениям глоба. - 🧪 Для фронтовых макросов, в которых всё в кучу (стили, тесты, картинки) ограничения смягчены, а местами выключены, потому что может отбрасываться более 99% найденных файлов. - 📄 В паре модулей уточнены глобы, чтобы не отбрасывать более 90% файлов в глобах. Параметры позволяют запретить создание в Аркадии глобов с большим количеством пропущенных файлов, что впустую расходует ресурсы кластера сборки. <a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a> </section> commit_hash:992c0828a6a4a3b4133262f8fd28afca43c13362
* Drop redundant command engine selectorsvpozdyayev2025-10-311-10/+0
| | | | commit_hash:42c31bdc603f17c76fa501097b49cfd8774b972b
* Overwrite user kotlinc flag -jvm-target by system JDK version valuedimdim112025-10-301-2/+2
| | | | | Overwrite user kotlinc flag -jvm-target by system JDK version value commit_hash:bcc8d1cd4bda7860cc0e2aa25d2629ca75e42965
* Use in semanticts JDK_REAL_VERSION as isdimdim112025-10-301-1/+1
| | | | | Use in semanticts JDK_REAL_VERSION as is commit_hash:68800aa65d9c3d5a56b218a7ec57b8e0974c79cb
* Add kotlinc information to jar files SBOMsvidyuk2025-10-281-1/+3
| | | | commit_hash:5b128341c508407dcc51d4d95b01a894c3544636
* Upgrading leftover macrosesvpozdyayev2025-10-231-0/+2
| | | | commit_hash:3680273e31d0040d3fbea89432d1e8539c3bce3f
* Refactor setup base Error Prone checks.nogert2025-10-231-0/+5
| | | | commit_hash:cc348cd44c4c6d2b32ccc6b36ee7210ac4585c54
* Add glob restrictionsdimdim112025-10-221-2/+2
| | | | | Add glob restrictions commit_hash:cc9055e74a023eaeea3076afdf525e2262101209
* Improve DEFAULT_*_JAVA_SRCS_LAYOUT docsmikhailche2025-10-211-4/+11
| | | | commit_hash:d94f2f05ef062c16ba7ad619b89cc8c71679e06b
* JUNIT6 support for autocheckmiroslav22025-10-151-2/+62
| | | | commit_hash:426d14d83a0ac051f25653da255346a3e946797a
* Support ErrorProne 2.42.0miroslav22025-10-091-3/+3
| | | | commit_hash:fa0354c890985a8717c644fff83657614a6579ea
* disable -sources.jar for protos via variableiniklyaev2025-10-071-1/+8
| | | | commit_hash:a4b4ea1430f9dac200fb204ac6cb79bf29723e3d
* Remove JDK 20 support from Arcadia Tier 0, remove build configuration for JDKmiroslav22025-10-071-43/+3
| | | | commit_hash:9222049b8c4fcdc00d541b68ff5f0ed4630efa89
* Поддержать JDK 25 в аркадииrobot-javacom2025-09-291-6/+30
| | | | | https://nda.ya.ru/t/8WYUG2pO7Kaaag commit_hash:5faed6ce4dc3add634be2e5b04f537573ff4c616
* Replace external JDK to 17 with compile to JDK 11dimdim112025-09-251-4/+9
| | | | | Replace external JDK to 17 with --target 11 commit_hash:2fa07228f9e341ee06623e3e262725295080c2cb
* Fix java semanticsdimdim112025-09-241-13/+13
| | | | | Fix java semantics commit_hash:8be3d546d77f4fd5aaebbc19a7f2ff08989d508a
* Enable the new command engine in semantics, batch #3vpozdyayev2025-09-241-60/+63
| | | | commit_hash:a5be9c234b34c043ab421bd2fe6381ff56ffc41f