Developer
Adolfo Santos
adolfos@meta.com
Performance
YoY:+92%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
No bugs introduced or fixed in this period.
Latest analyzed commits from this developer.
| Hash | Message | Date | Files |
|---|
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.
| Effort |
|---|
| c0fa13a0 | This commit introduces a **new capability** to explicitly define the target JDK release for Kotlin compilation within the build system. It **enhances the `kotlin_library` and `kotlin_test` rules** by adding a `jdk_release` attribute in `prelude/decls/kotlin_rules.bzl`. This new attribute is then utilized in `prelude/kotlin/kotlin_library.bzl` to pass the specified JDK release to the Kotlin compiler via the `-Xjdk-release` argument, falling back to `java_version` if not set. This change allows for more precise **Kotlin project configuration**, enabling `fbcode_macro` to infer the correct JDK release and ensuring compatibility with specific JDK versions during compilation. | Feb 25 | 2 | grow |
| 2762f9b6 | This commit introduces a **new capability** to the **Kotlin compilation process** by enabling dynamic resolution of the JDK home. The **`compile_kotlin.py` Python wrapper** now accepts `--jdk_locator` and `--java_binary` arguments, which are used to invoke a `jdk_locator` script to derive `JAVA_HOME` at runtime. This derived path is then passed to the `kotlinc` command via the `-jdk-home` flag, allowing the compiler to **target specific JDK versions** (e.g., 11, 17, 21, 25) for compilation. This ensures proper JDK-specific compilation and compatibility with Java toolchains without hardcoding paths. | Feb 10 | 1 | grow |
| 57b0d229 | This commit **fixes a bug** in the **JAR building process** where the `Multi-Release` manifest attribute could be incorrectly set to `false` during merging if a `false` value was processed after a `true` value. It introduces a **new extensible strategy pattern** for **manifest attribute merging** via the `JarManifestMerger` and `ManifestAttributeMerger` classes. This ensures that boolean attributes like `Multi-Release` correctly follow a "true wins" semantic, preventing erroneous overwrites. The **`JarBuilder`** module is refactored to utilize this new, more robust merging mechanism, significantly improving the reliability and correctness of merged JAR manifests. | Jan 15 | 4 | maint |
| 29c3554c | This commit introduces **assumption support for JUnit 5 (Jupiter) tests**, significantly **enhancing the test runner's ability to classify test outcomes**. A new `isAssumption` method has been added to the `JUnitSupport.Api` interface and implemented for JUnit Jupiter, allowing the system to correctly detect when a test is skipped due to an unmet assumption. The `JupiterRunner` was updated to leverage this new capability, modifying `getTestResultType` to accurately distinguish assumption violations from other test failures or errors. This **new feature** improves the precision of test reporting within the **JUnit test runner infrastructure**, providing clearer and more accurate feedback on test execution for **JUnit 5 projects**. | Oct 29 | 2 | grow |
| 8d26c97e | This commit introduces **Multi-Release JAR (MRJAR) support** to the **`java_library` rule** in Buck, enabling the creation of single JAR files that contain different class versions for various Java runtime environments. This **new capability** allows developers to specify a `min_release_version` and provide version-specific source files via the `multi_release_srcs` attribute. The implementation modifies rule definitions in `prelude/decls/java_rules.bzl` and `prelude/decls/jvm_common.bzl`, updates compilation logic in `prelude/java/java_library.bzl`'s `_append_javac_params` function, and significantly refactors the `prelude/java/tools/compile_and_package.py` script to handle version-specific compilation and JAR manifest generation. This enhancement provides **forward compatibility and optimized performance** for Java libraries across different JVM versions by allowing them to leverage newer language features while maintaining compatibility with older runtimes. | Jul 17 | 5 | grow |
| 6046dfe4 | This commit introduces **lazy initialization** for the `Deflater` instance within the `EntryAccounting` class, preventing its costly creation for JAR entries that do not require compression. This **performance optimization** refactors the `com.facebook.buck.util.zip.EntryAccounting` class to use a `LazyDeflate` inner class, ensuring `Deflater` objects are only instantiated when actively needed. The change significantly **improves JAR build times**, particularly for processes like `concat_jars` which frequently handle read-only entries, leading to faster execution and reduced resource consumption. New unit tests for `EntryAccounting` validate the updated compression logic, and the `jar_builder_main.jar` artifact digest is updated. | Jul 7 | 3 | grow |
| 7f9b0822 | This commit provides a **bug fix** for failing unit tests within the **`ConcatJarBuilder` module** by correcting assumptions about how concatenated JARs are handled. Previously, tests expected a strict order and unique entries, but `ClassLoader`s deduplicate entries using a `Map` at runtime, which can alter order and effectively hide duplicates. The `ConcatJarBuilderTest.java` file is updated to use `Set`s for comparing JAR entries and their values, accurately reflecting the `ClassLoader`'s behavior. Additionally, a new helper method, `readJarValuesAsMap`, is introduced in `JarTestSupport.java` to facilitate these more robust comparisons. This **test improvement** ensures the tests correctly validate the `ConcatJarBuilder`'s functionality, preventing future false negatives and enhancing test reliability. | Jun 2 | 2 | maint |
| e8a1d0e4 | This commit introduces a **new feature** to the **Java build system** by adding a `concat_resources` boolean attribute to the `java_library` rule. This new option, defined in `java_rules.bzl` and utilized within `java_library.bzl`'s `_create_jar_artifact` function, enables the underlying JAR packaging tool (`compile_and_package.py`) to perform parallel compression of source and resource files. By passing a `--concat_resources` argument to the tool's `_run_jar` function, this change allows for optimized merging into a single JAR. This enhancement **significantly accelerates the JAR packing phase** by improving resource handling efficiency. | Mar 25 | 3 | grow |
| 1a9a2441 | This commit introduces **parallelism** to the JAR building process within the `prelude/toolchains/android/src/com/facebook/buck/util/zip` module, specifically for `concat-deps` operations. It migrates existing parallel packing logic by adding a new `DirectoryJarBuilder` class and refactoring `DirectoryJarEntryContainer` to support **concurrent compression of directories into JAR files**. This **new capability** significantly improves performance for JAR creation when the `concatJars` option is enabled, as integrated into `JarBuilderMain`. The changes also include minor adjustments to `JarBuilder` and comprehensive new tests to validate the parallel JAR concatenation. | Mar 18 | 5 | grow |
| 8ceabce4 | This commit introduces a **new capability** to the **Java build system**, enabling the direct inclusion and merging of custom build manifest attributes into `java_binary` fat JARs. It adds a `build_manifest` attribute to the `java_binary` rule definition in `prelude/decls/java_rules.bzl`, allowing users to specify additional manifest files. The `_create_fat_jar` function in `prelude/java/java_binary.bzl` is updated to pass this new attribute, and the `fat_jar.py` tool now supports a `--build_manifest` argument to facilitate the merging of these additional manifest entries. This enhancement provides greater control over JAR metadata by integrating stamped build attributes directly at the unstamped JAR build time. | Jan 3 | 3 | grow |
This commit introduces a **new capability** to explicitly define the target JDK release for Kotlin compilation within the build system. It **enhances the `kotlin_library` and `kotlin_test` rules** by adding a `jdk_release` attribute in `prelude/decls/kotlin_rules.bzl`. This new attribute is then utilized in `prelude/kotlin/kotlin_library.bzl` to pass the specified JDK release to the Kotlin compiler via the `-Xjdk-release` argument, falling back to `java_version` if not set. This change allows for more precise **Kotlin project configuration**, enabling `fbcode_macro` to infer the correct JDK release and ensuring compatibility with specific JDK versions during compilation.
This commit introduces a **new capability** to the **Kotlin compilation process** by enabling dynamic resolution of the JDK home. The **`compile_kotlin.py` Python wrapper** now accepts `--jdk_locator` and `--java_binary` arguments, which are used to invoke a `jdk_locator` script to derive `JAVA_HOME` at runtime. This derived path is then passed to the `kotlinc` command via the `-jdk-home` flag, allowing the compiler to **target specific JDK versions** (e.g., 11, 17, 21, 25) for compilation. This ensures proper JDK-specific compilation and compatibility with Java toolchains without hardcoding paths.
This commit **fixes a bug** in the **JAR building process** where the `Multi-Release` manifest attribute could be incorrectly set to `false` during merging if a `false` value was processed after a `true` value. It introduces a **new extensible strategy pattern** for **manifest attribute merging** via the `JarManifestMerger` and `ManifestAttributeMerger` classes. This ensures that boolean attributes like `Multi-Release` correctly follow a "true wins" semantic, preventing erroneous overwrites. The **`JarBuilder`** module is refactored to utilize this new, more robust merging mechanism, significantly improving the reliability and correctness of merged JAR manifests.
This commit introduces **assumption support for JUnit 5 (Jupiter) tests**, significantly **enhancing the test runner's ability to classify test outcomes**. A new `isAssumption` method has been added to the `JUnitSupport.Api` interface and implemented for JUnit Jupiter, allowing the system to correctly detect when a test is skipped due to an unmet assumption. The `JupiterRunner` was updated to leverage this new capability, modifying `getTestResultType` to accurately distinguish assumption violations from other test failures or errors. This **new feature** improves the precision of test reporting within the **JUnit test runner infrastructure**, providing clearer and more accurate feedback on test execution for **JUnit 5 projects**.
This commit introduces **Multi-Release JAR (MRJAR) support** to the **`java_library` rule** in Buck, enabling the creation of single JAR files that contain different class versions for various Java runtime environments. This **new capability** allows developers to specify a `min_release_version` and provide version-specific source files via the `multi_release_srcs` attribute. The implementation modifies rule definitions in `prelude/decls/java_rules.bzl` and `prelude/decls/jvm_common.bzl`, updates compilation logic in `prelude/java/java_library.bzl`'s `_append_javac_params` function, and significantly refactors the `prelude/java/tools/compile_and_package.py` script to handle version-specific compilation and JAR manifest generation. This enhancement provides **forward compatibility and optimized performance** for Java libraries across different JVM versions by allowing them to leverage newer language features while maintaining compatibility with older runtimes.
This commit introduces **lazy initialization** for the `Deflater` instance within the `EntryAccounting` class, preventing its costly creation for JAR entries that do not require compression. This **performance optimization** refactors the `com.facebook.buck.util.zip.EntryAccounting` class to use a `LazyDeflate` inner class, ensuring `Deflater` objects are only instantiated when actively needed. The change significantly **improves JAR build times**, particularly for processes like `concat_jars` which frequently handle read-only entries, leading to faster execution and reduced resource consumption. New unit tests for `EntryAccounting` validate the updated compression logic, and the `jar_builder_main.jar` artifact digest is updated.
This commit provides a **bug fix** for failing unit tests within the **`ConcatJarBuilder` module** by correcting assumptions about how concatenated JARs are handled. Previously, tests expected a strict order and unique entries, but `ClassLoader`s deduplicate entries using a `Map` at runtime, which can alter order and effectively hide duplicates. The `ConcatJarBuilderTest.java` file is updated to use `Set`s for comparing JAR entries and their values, accurately reflecting the `ClassLoader`'s behavior. Additionally, a new helper method, `readJarValuesAsMap`, is introduced in `JarTestSupport.java` to facilitate these more robust comparisons. This **test improvement** ensures the tests correctly validate the `ConcatJarBuilder`'s functionality, preventing future false negatives and enhancing test reliability.
This commit introduces a **new feature** to the **Java build system** by adding a `concat_resources` boolean attribute to the `java_library` rule. This new option, defined in `java_rules.bzl` and utilized within `java_library.bzl`'s `_create_jar_artifact` function, enables the underlying JAR packaging tool (`compile_and_package.py`) to perform parallel compression of source and resource files. By passing a `--concat_resources` argument to the tool's `_run_jar` function, this change allows for optimized merging into a single JAR. This enhancement **significantly accelerates the JAR packing phase** by improving resource handling efficiency.
This commit introduces **parallelism** to the JAR building process within the `prelude/toolchains/android/src/com/facebook/buck/util/zip` module, specifically for `concat-deps` operations. It migrates existing parallel packing logic by adding a new `DirectoryJarBuilder` class and refactoring `DirectoryJarEntryContainer` to support **concurrent compression of directories into JAR files**. This **new capability** significantly improves performance for JAR creation when the `concatJars` option is enabled, as integrated into `JarBuilderMain`. The changes also include minor adjustments to `JarBuilder` and comprehensive new tests to validate the parallel JAR concatenation.
This commit introduces a **new capability** to the **Java build system**, enabling the direct inclusion and merging of custom build manifest attributes into `java_binary` fat JARs. It adds a `build_manifest` attribute to the `java_binary` rule definition in `prelude/decls/java_rules.bzl`, allowing users to specify additional manifest files. The `_create_fat_jar` function in `prelude/java/java_binary.bzl` is updated to pass this new attribute, and the `fat_jar.py` tool now supports a `--build_manifest` argument to facilitate the merging of these additional manifest entries. This enhancement provides greater control over JAR metadata by integrating stamped build attributes directly at the unstamped JAR build time.