10 puntos por GN⁺ 2024-02-04 | 2 comentarios | Compartir por WhatsApp
  • Pkl (se pronuncia Pickle) es un lenguaje de programación para generar configuración, y Apple anunció su primer lanzamiento después de liberar como código abierto una herramienta que usaba internamente
    • "Configuration that is Programmable, Scalable, and Safe"

  • Los lenguajes estáticos como JSON, YAML y Property Lists tienen límites cuando la complejidad aumenta
  • Pkl busca un equilibrio entre los lenguajes estáticos y los lenguajes de programación de propósito general

Recorrido rápido por Pkl

  • Incluye funciones como clases, funciones, bucles y anotaciones de tipos para ofrecer una sintaxis familiar para desarrolladores y una curva de aprendizaje sencilla
  • Los archivos Pkl se usan para definir esquemas de configuración y también otros datos de configuración
  • Los programas Pkl pueden renderizarse fácilmente en formatos comunes como YAML, JSON y XML

Validación integrada

  • Los datos deben ser válidos, y en Pkl esto se logra mediante anotaciones de tipos.
  • Las anotaciones de tipos pueden definir restricciones, y una restricción que falle provoca un error de evaluación.

Compartir paquetes

  • Pkl ofrece la capacidad de publicar paquetes e importarlos como dependencias dentro de proyectos
  • Se pueden crear y publicar paquetes fácilmente con GitHub Releases, y gestionar dependencias a través del proyecto

Bindings de lenguaje

  • Pkl puede generar configuraciones como salida de texto y también puede integrarse como biblioteca en otros lenguajes.
  • Los esquemas de Pkl pueden generarse como clases/structs del lenguaje de destino, con soporte para Swift, Go, Java, Kotlin y más

Soporte de editor

  • Su objetivo es hacer que la experiencia de escribir Pkl sea la mejor posible
  • Ofrece un soporte completo para los editores de JetBrains, incluido un plugin para IntelliJ
  • Proporciona funciones como autocompletado, navegación y validación, y planea dar soporte a Language Server Protocol

Siguientes pasos

  • Recomienda consultar la guía detallada de Pkl, la referencia del lenguaje y la comunicación a través de GitHub Discussions
  • También recomienda un repositorio de ejemplos para casos de uso de Pkl, descargar el CLI e instalar plugins de editor

Opinión de GN⁺:

  • Pkl parece ser un nuevo lenguaje de programación creado para resolver la complejidad de la gestión de configuración, y podría ser útil para los desarrolladores.
  • La validación integrada y la función de compartir paquetes pueden mejorar la reutilización y el mantenimiento del código.
  • Los bindings para varios lenguajes y el soporte de editor permitirán aplicar Pkl en más entornos de desarrollo, ayudando a los desarrolladores a gestionar configuraciones con mayor facilidad.

2 comentarios

 
secret3056 2024-02-05

Lo sospechaba, y sí, hay bindings para Go. Parece que Apple también usa bastante Go.
apple/pkl-go: Bindings de Pkl para el lenguaje de programación Go

 
GN⁺ 2024-02-04
Opiniones en Hacker News
  • Resumen de comentarios de Hacker News:
    • Hace 25 años, la mayoría de los programas ofrecían configuración y ayuda mediante una GUI. La configuración se guardaba en archivos .ini o en el registro de Windows, y también podía editarse manualmente. Ahora hay que usar un lenguaje de programación en forma de binario de 87 MB para generar archivos de configuración, y para ejecutar ese mismo lenguaje también hay que crear manualmente un archivo de configuración. A este paso, parece que se va a necesitar un framework de 500 GB, pero para un lenguaje de programación que genera archivos de configuración. Da la impresión de que los desarrolladores modernos se dedican a crear problemas.
    • Pkl era una de las mejores herramientas que se usaban internamente en Apple, y da gusto que ahora se haya liberado como open source. Un equipo migró con éxito varios kLOC de configuración de k8s a pkl, y con pkl escribió configuraciones para dos herramientas de monitoreo, generó un sitio de documentación estático y definiciones de alertas que conectaban todo. Lo recomendaría, y me emociona poder volver a usarlo.
    • Pkl fue construido usando el framework GraalVM Truffle y admite compilación en tiempo de ejecución usando la proyección de Futamura. Llevo mucho tiempo trabajando en esto junto con Apple y me da muchísimo gusto por fin poder ver el código fuente. (Comentario de un desarrollador de GraalVM)
    • Poder obtener recursos HTTP y leer archivos del sistema, junto con la completitud de Turing, son capacidades inesperadas en un lenguaje de configuración. Me pregunto si tanta complejidad está justificada.
    • Después de leer un poco la documentación, da la impresión de que están demasiado obsesionados con la idea de crear un lenguaje que sirva como definición de esquema y como portador de valores por defecto mínimos. Me preocupan los modos de falla inesperados causados por el uso excesivo. Aunque quizá esa sea la función central: cualquiera que agregue pkl a un software termina participando en el monstruo de configuración que se va a generar. Parte de la suposición de que un sistema unificado será menos malo que un caos sin estructura.
    • Ofrece plugins y extensiones para IntelliJ, Visual Studio Code y Neovim, y pronto se añadirá soporte para Language Server Protocol. No entiendo por qué no implementaron primero LSP (o únicamente eso). Todos los editores ya tienen soporte integrado para LSP, así que no habría hecho falta una implementación aparte.
    • Después de pensar durante mucho tiempo sobre los lenguajes de configuración, y tras una relación de amor/odio con los esquemas, llegué a la conclusión de que no quiero tipos ricos en la configuración. Uso un lenguaje de programación con tipado estático y, en el lenguaje de configuración, solo quiero cadenas, arreglos y hashmaps como tipos, dejando toda la validación de tipos para la etapa de parseo.
    • Es parecido a Cue, pero más primitivo, menos guiado por principios y escrito en Java.
    • Me cuesta entender qué problema intenta resolver Pkl. Al leer el título, pensé que Pkl era un lenguaje de configuración nuevo y mejor, como TOML, pero después de leer el artículo me quedó la impresión de que Pkl es un lenguaje para generar configuración. No parece ser el archivo de configuración en sí, sino una herramienta más abstracta que ayuda a construir y reutilizar configuraciones de forma más estandarizada. Por ejemplo, si hay configuraciones de Terraform o Cloudformation que quieres compartir o repetir entre varios proyectos, la forma más fácil suele ser copiarlas y pegarlas en otro proyecto, cambiar unas líneas y ajustarlas. Me pregunto si Pkl ayuda a resolver ese problema o si se me está escapando algo.