This repository implements a GitHub Action (`actions/setup-java`) that installs a Java JDK or JRE in CI environments. It supports 17+ distributions (Adoptium Temurin, Azul Zulu, Microsoft, Amazon Corretto, GraalVM, Liberica, etc.) and resolves versions from user input, version files (`.java-version`, `.tool-versions`, `.sdkmanrc`), or the `latest` alias. The action also sets up dependency caching for Maven, Gradle, and sbt, generates Maven settings.xml with server credentials and GPG signing profiles, and handles Maven toolchains.xml merging across workflow steps. It includes signature verification (GPG) for Temurin and Microsoft distributions and checksum verification for downloaded archives. The architecture is modular: a factory pattern lazily loads distribution-specific installer classes (each extending an abstract `JavaBase`), which handle version resolution, download, extraction, and tool-cache registration. A separate cache system (JDK binary cache, dependency cache, and resolution cache) uses GitHub Actions cache primitives with configurable retention. The codebase is written in TypeScript and heavily leverages the `@actions/*` toolkit. Tests mock all external dependencies and use static JSON fixtures to simulate vendor APIs. The action is deployed as compiled bundles in `dist/` and is actively maintained with comprehensive CI workflows for e2e testing across OS, architecture, and distribution variants. The core value of this repository is its reliability and breadth of support: it automates the brittle process of Java version management in CI, handles edge cases like early-access builds, floating version tags, and platform-specific package types (jdk+fx, jdk+jmods, etc.). The caching and retry logic reduce pipeline execution time and failure rates. While tightly integrated with GitHub Actions, several internal modules (retrying HTTP client, checksum verification, XML escaping) are isolated enough for potential extraction into other TypeScript projects.
This repository is a curated, structured dataset of C and C++ standard features (from C99 to C++29) with per-compiler support status across multiple toolchains (GCC, Clang, MSVC, Xcode, etc.). It includes YAML data files defining features, toolchain releases, and frontend metadata, along with a C++ validation tool that enforces schema compliance and semantic consistency (e.g., verifying that referenced tool versions exist and issue trackers are properly used). The dataset is designed to power a reference website (cppstat) and is accompanied by detailed Markdown explanations for each feature. While the primary artifact is the data itself, the validator and CI pipeline demonstrate strong data engineering practices, making the repository a reliable source for compiler feature support information.