This repository is the core implementation of the Kotlin programming language, serving as the reference compiler and tooling suite. It encompasses the full compilation pipeline (frontend, IR, backends for JVM, JS, Native, Wasm), the standard library, and build tool integrations (Gradle, Maven). The architecture is modular, separating concerns into compiler logic, analysis APIs for IDEs, and platform-specific backends. Key entry points include the CLI compiler, the Gradle plugin, and the Analysis API used by IDEs like IntelliJ IDEA. The primary data flow involves parsing source code into PSI/FIR, transforming it into IR, and generating target-specific bytecode or executables. It relies on external dependencies such as the Java JDK, LLVM (for Native), and Gradle.
Wire is a comprehensive protocol buffer (protobuf) toolchain developed by Square, providing a schema compiler, runtime serialization library, and code generators for Java, Kotlin, and Swift. In production, it parses `.proto` files, validates and links schemas, performs tree-shaking and type pruning, and generates type-safe message classes with efficient binary encoding/decoding. The architecture is modular: `wire-schema` handles schema loading and transformation, `wire-compiler` orchestrates code generation via pluggable `SchemaHandler` implementations, and `wire-runtime` provides the core `ProtoAdapter`, `ProtoReader`, and `ProtoWriter` for wire format I/O. Key entry points include the `WireCompiler` CLI, the Gradle plugin (`com.squareup.wire`), and the `GrpcClient` for gRPC communication. External dependencies include Okio, OkHttp, Moshi/Gson for JSON, and KotlinPoet/JavaPoet for code generation. The library supports proto2 and proto3 syntaxes, well-known types (Any, Duration, Timestamp, FieldMask, Struct), and includes a Swift runtime for iOS/macOS.
The Gradle Changelog Plugin is a library that provides tasks and helper methods for managing changelogs in the 'Keep a Changelog' format. It parses Markdown changelog files to extract versioned sections, supports rendering in multiple formats (Markdown, HTML, plain text), and provides three main Gradle tasks: getChangelog (retrieves changelog for a version), initializeChangelog (creates a new changelog file), and patchChangelog (releases the unreleased section). The plugin features robust handling of various line separators, preservation of inline links in version headers, and flexible configuration for different Git hosting platforms.
Android Stem is a Gradle plugin that resolves placeholders in Android XML string resource files at compile time. It scans `res/values/` directories (and library dependencies) for strings containing placeholders like `${app_name}`, then replaces them with actual values defined in other strings. The plugin supports multi-language (`values-es/`, `values-fr/`), multi-flavor (product flavors), and recursive template resolution with circular dependency detection. It integrates with the Android Gradle Plugin (AGP) variant API, registering three cacheable tasks per build variant: `RawStringCollector` (collects all string resources into a protobuf binary), `GatherStringTemplates` (identifies templates and their values, outputting JSON), and `ResolvePlaceholders` (performs the actual placeholder substitution and writes resolved XML files to `build/generated/stem/`). The plugin is configured via an `androidStem` block in `build.gradle.kts`, allowing customization of placeholder delimiters and localized-only template inclusion. It is published on the Gradle Plugin Portal and has a comprehensive test suite covering unit, integration, and concurrency scenarios.
This repository is a GraphQL code generation library and build plugin suite. It parses GraphQL schemas (SDL or introspection JSON) and generates Java, Kotlin, and Scala source files for types, enums, interfaces, unions, resolvers, client request/response classes, and response projections. The architecture is a core codegen engine with language-specific adapters (JavaGraphQLCodegen, KotlinGraphQLCodegen, ScalaGraphQLCodegen) that use FreeMarker templates for output. It integrates with Gradle, Maven, and SBT via dedicated plugins. External dependencies include graphql-java for schema parsing, FreeMarker for templating, and Jackson for serialization in generated code. The system supports extensive configuration (naming conventions, annotations, custom type mappings, Relay support) and is designed for schema-first development on both server and client sides.
Kopy is a Kotlin compiler plugin that generates an ergonomic DSL for immutable updates on data classes. It adds `copy`, `set`, `update`, and `updateEach` functions to data classes annotated with `@Kopy`, enabling deep nested property changes without manual `copy` chains. The plugin uses `kotlin.concurrent.atomics.AtomicReference` for thread-safe snapshots and integrates as a Gradle plugin. The codebase is a multi-module Gradle project with a compiler plugin module (`kopy-compiler`), a Gradle plugin module (`kopy-gradle-plugin`), a runtime annotations module (`kopy-runtime`), and a configuration enums module (`kopy-args`). It includes extensive test data for FIR and IR transformations, covering diagnostics, box tests, visibility, inheritance, serialization, and edge cases. The project is actively maintained, with a well-structured architecture and high test coverage.
Roborazzi is a Kotlin-based visual regression testing framework for Android, Compose Multiplatform (Desktop, iOS), and pure JVM. It integrates with Robolectric to capture screenshots of UI components in unit tests, compares them against golden images, and generates detailed reports (HTML, JSON, PR comments). The framework includes a Gradle plugin that creates record/verify/compare tasks, a JUnit rule for automatic capture, support for GIF/APNG/video recording, UI tree dumps, accessibility checks (via ATF), and experimental AI-powered image assertions (Gemini, OpenAI). It also auto-generates screenshot tests from Compose `@Preview` annotations for both Robolectric and Desktop targets. The architecture is modular: a core library with platform-specific implementations for Android, Desktop, and iOS; a painter module for image encoding/decoding; and separate modules for Compose integration, JUnit rules, preview scanning, and an IntelliJ/Android Studio plugin. The codebase is actively maintained, well-documented, and employs modern Kotlin patterns (KMP, Gradle Configuration Cache, BuildService). It is not a data research project.
Grazel is a Gradle plugin that migrates Android projects from Gradle to Bazel build systems. It analyzes Gradle project configuration, extracts Android-specific information (dependencies, variants, resources, manifest), and generates equivalent Bazel BUILD and WORKSPACE files. The plugin supports incremental migration, allowing parts of a project to use Bazel while others remain on Gradle. Architecture follows Gradle plugin conventions with modular separation: core plugin implementation, extension points for configuration, dependency analysis/resolution components, Android-specific extraction logic, Bazel rule generation using a type-safe Kotlin DSL for Starlark, and task management for orchestrating the migration process. Dependency injection via Dagger/Hilt ensures loose coupling and testability.
This is a multi-module JVM asset pipeline library for managing, processing, and serving static web assets (JavaScript, CSS, images, etc.) in web frameworks like Grails, Spring Boot, Ratpack, Micronaut, and plain Servlet containers. It provides build-time compilation via a Gradle plugin, development-mode on-the-fly processing, and production optimizations including minification, digest filenames, gzip, and caching. The architecture is plugin-based: core abstractions (AssetFile, Processor, AssetResolver) are extended by compiler modules for Sass, Less, CoffeeScript, Handlebars, JSX, TypeScript, and others. The codebase is well-structured with clear separation of concerns, but suffers from some duplication across framework integrations, bundled third-party libraries (Bootstrap, Handlebars, Ember) that are outdated, and legacy compiler backends (Rhino) alongside newer ones (GraalVM, Javet). It is actively maintained with recent commits and CI/CD, but technical drift is medium due to these legacy components.
Dependency Guard is a Gradle plugin that monitors and protects against unintentional dependency changes in JVM-based projects. It creates baseline files of project dependencies for specified configurations and compares current dependencies against these baselines during build execution. When unintended changes are detected, it fails the build and provides a clear diff of what changed, allowing developers to either re-baseline for intentional changes or investigate problematic dependency drift. The plugin supports both simple list format and hierarchical tree format for dependency reporting, with the list format being recommended for CI usage due to less noise. It integrates with Gradle's lifecycle by automatically attaching to the 'check' task and provides clear commands for creating and updating baselines.
This repository contains a Gradle plugin that enhances Gradle's built-in property loading mechanism. The plugin adds support for environment-specific property files (gradle-${environmentName}.properties) and user-specific property files (gradle-${gradleUserName}.properties), modifies the property processing order, creates filter tokens for file filtering, and provides task-level methods for validating required and recommended properties. It is implemented in Groovy and follows standard Gradle plugin patterns, with comprehensive test coverage verifying its behavior in various scenarios including multi-project builds.