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

Состоялся релиз языка программирования от 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}»)))»). В случае присвоения значения, не соответствующего условию, валидатор выведет ошибку (например, при попытке присвоить значение 1001 параметру, определённому как «Int(this > 1000)»).

Источник: habr.com

0 0 голоса
Рейтинг новости
0
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии