Pkl — замена YML и JSON от Apple



Оказывается, у яблочной компании есть опенсорсное решение для конфигурационных файлов. Что обычно нужно для конфигов? Понятный простой синтаксис, возможность наследоваться от базовых конфигов и расширять шаблонные, валидация схемы данных. И новый pkl (Pickle) как будто всё это умеет.

class AppConfig {

port: Int = 8080

logLevel: String = "INFO"

timeout: Duration = Duration.seconds(30)



function validate() {

port > 0 && port < 65536

}

}



api = new AppConfig {

port = 3000

timeout = Duration.minutes(2)

}



Как будто всё по коду понятно даже без объяснений. Есть наследование, есть валидация, есть схема данных, всё в понятном формате.



Конечно, менять всё в своих проектах я резко не брошусь на этот новый формат, потому что обычно в проектах вокруг конфигов есть ещё много обёрток и тулинга, а тут пока слишком молодой формат. Но поиграться в свободное время попробую.



https://www.trevorlasn.com/blog/pkl-apple-new-configuration-language