← Package directory
Available on winget

Install Pkl

Configuration that is Programmable, Scalable, and Safe

Install with winget
winget install --id Apple.Pkl
Upgrade
winget upgrade --id Apple.Pkl
Uninstall
winget uninstall --id Apple.Pkl

About Pkl

Pkl — pronounced Pickle — is an embeddable configuration language which provides rich support for data templating and validation. It can be used from the command line, integrated in a build pipeline, or embedded in a program. Pkl scales from small to large, simple to complex, ad-hoc to repetitive configuration tasks.

What's new in 0.31.1

Pkl 0.31 was released on February 26th, 2026. The latest bugfix release is 0.31.1. (All Versions) The next release (0.32) is scheduled for July 2026. To see what’s coming in the future, follow the Pkl Roadmap. Please send feedback and questions to GitHub Discussions, or submit an issue on GitHub. Pkl is hosted on GitHub. To get started, follow Installation.

Read release notes

Version history

Version Updated Notes
0.31.1 Unknown Pkl 0.31 was released on February 26th, 2026. The latest bugfix release is 0.31.1. (All Versions) The next release (0.32) is scheduled for July 2026. To see what’s coming in the future, follow the Pkl Roadmap. Please sen...
0.31.0 Unknown Pkl 0.31 was released on February 26th, 2026. The latest bugfix release is 0.31.0. (All Versions) The next release (0.32) is scheduled for July 2026. To see what’s coming in the future, follow the Pkl Roadmap. Please sen...
0.30.2 Unknown Pkl 0.30 was released on November 3rd, 2025. The latest bugfix release is 0.30.2. (All Versions) This release introduces a code formatter, and an in-language API for producing pkl-binary output. The next release (0.31) i...
0.30.1 Unknown Pkl 0.30 was released on November 3rd, 2025. The latest bugfix release is 0.30.1. (All Versions) This release introduces a code formatter, and an in-language API for producing pkl-binary output. The next release (0.31) i...
0.30.0 Unknown Release notes
0.29.1 Unknown Fixes - Fixes an issue where autocompletion in Bash and ZSH do noes not suggest filenames (#1161). - Fixes an issue where pkldoc throws a runtime error about failing to load class path resources (#1174). - Fixes an issue...
0.29.0 Unknown Release notes
0.28.2 Unknown Fixes - Adds an optimization when object bodies with generators produce no members (#1013). - Fixes a runtime crash when --output-path points to a directory (#1038). - Fixes a bug that sometimes causes pkl-doc to crash (...
0.28.1 Unknown Fixes - Fixes an issue where Pkl Gradle tasks can possibly fail with java.lang.UnsatisfiedLinkError (#995). - Fixes an issue where the artifacts pkl-tools and pkl-config-java-all fail with java.lang.ClassFormatError (#99...
0.28.0 Unknown Release notes
0.27.2 Unknown Fixes - Fixes issues where server mode message decoding might result in null pointer exceptions (#853, #882). - Fixes an issue where the test report outputs decimal numbers using local-specific decimals (#868). - Fixes a...
0.27.1 Unknown Fixes - Fixes a broken "number literals" link in the 0.27 release notes (#784). - Fixes a possible deadlock during external reader process close (#786). - Fixes counting elements with computed indices multiple times in l...
0.27.0 Unknown Release notes
0.26.3 Unknown Fixes - Fixes an issue where CLI argument --property foo="" is effectively parsed as --property foo="true". This is now parsed as an empty string (#596). - Fixes a regression where amending a globbed import or globbed re...