# apple/pkl

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/apple-pkl).**

11,429 stars · 386 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/apple/pkl
- Homepage: https://pkl-lang.org
- awesome-repositories: https://awesome-repositories.com/repository/apple-pkl.md

## Topics

`config` `configuration` `data` `functional` `java` `json` `kotlin` `language` `object-oriented` `pkl` `programming-language` `properties` `propertylist` `validation` `xml` `yaml`

## Description

Pkl is a configuration-as-code language used to define, validate, and generate structured configuration files. It functions as a type-safe configuration generator that enforces data integrity through a strongly-typed schema, ensuring configuration values meet defined constraints and types during evaluation.

The project distinguishes itself by acting as both a configuration file generator and a binding generator. It transforms high-level programmable definitions into static formats such as JSON, YAML, or XML, and produces language-specific source code to synchronize settings and provide type safety between configuration files and application logic.

The system includes a read-eval-print loop for interactive testing of configuration logic and data transformations. Its capabilities cover configuration lifecycle automation, including the ability to evaluate batches of files and embed the configuration language directly into applications.

## Tags

### Development Tools & Productivity

- [Configuration Generators](https://awesome-repositories.com/f/development-tools-productivity/type-safe-binding-generators/configuration-generators.md) — Acts as a type-safe generator that produces both validated configuration outputs and language-specific bindings.
- [Type-Safe Binding Generators](https://awesome-repositories.com/f/development-tools-productivity/cli-build-tools/ffi-binding-cli-generators/type-safe-binding-generators.md) — Generates type-safe language bindings from configuration definitions to synchronize settings with application logic.
- [Type-Safe Configuration Languages](https://awesome-repositories.com/f/development-tools-productivity/configuration-as-code/type-safe-configuration-languages.md) — Provides a programmable language for defining, validating, and generating structured configuration files with built-in type checking.
- [Configuration File Generators](https://awesome-repositories.com/f/development-tools-productivity/configuration-file-generators.md) — Transforms high-level programmable definitions into static configuration files like JSON, YAML, or XML. ([source](https://github.com/apple/pkl#readme))
- [Configuration File Generators](https://awesome-repositories.com/f/development-tools-productivity/configuration-generators/configuration-file-generators.md) — Transforms programmable definitions into standard static configuration files like JSON, YAML, or XML.
- [Programmable](https://awesome-repositories.com/f/development-tools-productivity/configuration-generators/programmable.md) — Transforms high-level programmable definitions into static structured formats required by other software applications.
- [Static Configuration Generators](https://awesome-repositories.com/f/development-tools-productivity/static-configuration-generators.md) — Transforms high-level programmable definitions into static formats such as JSON, YAML, or XML. ([source](https://github.com/apple/pkl#readme))
- [Type-Safe Binding Generators](https://awesome-repositories.com/f/development-tools-productivity/type-safe-binding-generators.md) — Generates type definitions and proxies from configuration definitions to ensure static type safety across language boundaries.
- [Rust Language Binding Generators](https://awesome-repositories.com/f/development-tools-productivity/type-safe-binding-generators/rust-language-binding-generators.md) — Generates language-specific source code from configuration definitions to provide type safety between files and applications.
- [Interactive REPLs](https://awesome-repositories.com/f/development-tools-productivity/interactive-repls.md) — Enables real-time testing of configuration logic and state inspection through an interactive REPL. ([source](https://github.com/apple/pkl/tree/main/pkl-cli))
- [Read-Eval-Print Loops](https://awesome-repositories.com/f/development-tools-productivity/read-eval-print-loops.md) — Includes an interactive environment for executing and testing configuration expressions in real-time.

### DevOps & Infrastructure

- [Configuration as Code](https://awesome-repositories.com/f/devops-infrastructure/configuration-as-code.md) — Provides a programmable language for managing application settings and data schemas through version-controlled files. ([source](https://github.com/apple/pkl#readme))
- [Configuration Validation](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/configuration-validation.md) — Enforces data integrity by verifying configuration values against defined schemas and constraints before deployment. ([source](https://github.com/apple/pkl#readme))
- [Configuration Schemas](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/configuration-validation/configuration-schemas.md) — Enforces data integrity by validating configuration values against strongly-typed schemas and constraints.
- [Automated Configuration Management](https://awesome-repositories.com/f/devops-infrastructure/automated-configuration-management.md) — Automates the synchronization and verification of configuration files based on external inputs to ensure stability.
- [Configuration Lifecycle Automations](https://awesome-repositories.com/f/devops-infrastructure/configuration-lifecycle-automations.md) — Evaluates and verifies batches of configuration files as part of a deployment pipeline to ensure environment stability.

### Data & Databases

- [Configuration Languages](https://awesome-repositories.com/f/data-databases/structured-data-records/configuration-languages.md) — Provides a programmable syntax for defining hierarchical settings and parameters with built-in logic and variables. ([source](https://github.com/apple/pkl#readme))

### Programming Languages & Runtimes

- [Source Code Generators](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-generators.md) — Programmatically generates language-specific source code from configuration definitions to synchronize settings with application logic.

### Software Engineering & Architecture

- [Type-Safe Configurations](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-formats-and-schemas/type-safe-configurations.md) — Uses schema-based models to provide type-safe configuration and validation of settings.
- [Configuration Validation Tools](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-lifecycle-management/configuration-validation-tools.md) — Verifies the syntax and integrity of configuration files to identify errors before deployment.
- [Configuration-as-Code Management](https://awesome-repositories.com/f/software-engineering-architecture/configuration-as-code-management.md) — Uses a programmable language to define and version settings, reducing repetition and ensuring consistency across environments. ([source](https://github.com/apple/pkl#readme))
- [Configuration Validation](https://awesome-repositories.com/f/software-engineering-architecture/configuration-validation.md) — Implements mechanisms to verify that configuration keys and values are present and valid during the evaluation process. ([source](https://github.com/apple/pkl#readme))
- [Data Type Validation](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation.md) — Checks configuration values against defined types and constraints to ensure data conforms to expected structures.
- [Strongly-Typed Validators](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/strongly-typed-validators.md) — Leverages a strong type system to enforce data integrity through validators during the configuration evaluation process.
