1. Pkl, a Programming Language for Configuration (pkl-lang.org)
Pkl(发音为Pickle)是一种专为生成配置而设计的编程语言。它旨在结合静态配置语言(如JSON、YAML)的简洁性与通用编程语言的强大表达能力,以解决传统配置格式在复杂度增加时出现的代码重复、缺乏验证等问题。
Pkl 的主要特点和优势包括:
- 融合两方面优势:语法声明式且易于读写,同时支持类、函数、条件、循环等通用语言特性。
- 内置验证:通过类型注解和约束在部署前捕获配置错误,确保数据有效性。
- 可扩展性:支持抽象、复用,可通过创建和发布包来共享代码。
- 多格式输出:可轻松将配置渲染为YAML、JSON、XML等常见格式。
- 灵活的集成方式:既可作为独立工具生成静态配置文件,也可通过语言绑定作为库嵌入其他应用程序。
核心功能示例:
- 定义与继承:使用
module定义配置模板(如Application.pkl),通过amends关键字创建派生配置(如localhost.pkl),避免重复。 - 数据生成:支持使用
for循环等生成器动态创建配置变体(如sidecars.pkl)。 - 数据验证:在类型注解中添加约束(如
isBetween、matches),违反约束将引发评估错误。 - 包管理:支持发布和导入包,可通过项目文件管理依赖,解决版本冲突。
工具与生态支持:
- 语言绑定:支持将Pkl模式生成为Swift、Go、Java和Kotlin等语言的代码(类/结构体),并保留文档注释。同时提供低层级的评估器API。
- 编辑器集成:提供一流的IDE支持(如IntelliJ插件),包含自动补全、导航、即时验证和重构等功能,并计划支持语言服务器协议以扩展到其他编辑器。
- 官方包:维护如
pkl-pantry(综合包仓库)和pkl-k8s(Kubernetes模板)等共享包。
Pkl 旨在为配置提供一个安全、可扩展且编写体验愉悦的专用语言解决方案。