Search
Write a publication
Pull to refresh

Релиз языка программирования от Apple для определения конфигурации под названием Pkl (произносится как Pickle)

Reading time2 min
Views13K

Состоялся релиз языка программирования от Apple для определения конфигурации и продвигающего модель «конфигурация как код» под названием Pkl (произносится как Pickle).

Pkl  — это встраиваемый язык для определения конфигурации, который обеспечивает широкую поддержку шаблонов и проверки данных. Его можно использовать из командной строки, интегрировать в конвейер сборки или внедрить в приложения. Pkl масштабируется от малого к большому, от простого к сложному, от специальных до повторяющихся задач настройки конфигурации.

Согласно данным OpenNET, связанный с Pkl инструментарий написан на Kotlin и опубликован под лицензией Apache. Плагины для работы с кодом на языке Pkl подготовлены для сред разработки IntelliJ, Visual Studio Code и Neovim. В ближайшее время ожидается публикация обработчика LSP (Language Server Protocol).

Pkl сочетает свойства простого для восприятия декларативного языка с расширенными возможностями, свойственными для языков общего назначения. В языке Pkl поддерживаются аннотации типов, классы, функции, вычислительные выражения, условия и циклы.

Pkl может применяться как при генерации статических конфигураций в разных форматах, таких как JSON, YAML и XML, так и при формировании модулей для обработки заданных форматов конфигурации в приложениях на различных языках программирования.

Привязки для интеграции Pkl в приложения подготовлены для Java, Kotlin, Go и Swift. Отдельно предложен модуль для интеграции с фреймворком Spring. Привязки позволяют на основе конфигурации на языке Pkl сформировать готовые пакеты и модули с классами для работы с описанной конфигурацией в приложении. Пакеты с описанием конфигурации могут публиковаться в репозиториях и импортироваться в качестве зависимости, что допускает совместное использование кода Pkl между разными проектами.

Язык предоставляет гибкие средства для определения условий и проверок корректности значений, позволяющих выявлять ошибки в итоговой конфигурации на этапе до её применения в приложении. Например, можно определить допустимый диапазон значений ("port: Int(this > 1000)" или "age: Int(isBetween(0, 130))"), обязательность или необязательность заполнения и формат ("zipCode: String(matches(Regex("\d{5}")))"). В случае присвоения значения, не соответствующего условию, валидатор выведет ошибку (например, при попытке присвоить значение 100 параметру, определённому как "Int(this > 1000)").

Tags:
Hubs:
Total votes 10: ↑8 and ↓2+9
Comments17

Other news