Apple releases Pkl – onfiguration as code language

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • cue

    The home of the CUE language! Validate and define text-based and dynamic configuration

  • I've been somewhat surprised that CUE bills itself as "tooling friendly" and doesn't yet have a language server- the number one bit of tooling most devs use for a particular language.

    I'm assuming it's becaus CUE is still unstable?

    Anyway, if others are interested in CUE's LSP work, I think https://github.com/cue-lang/cue/issues/142 is the issue to subscribe to

  • dhall-lang

    Maintainable configuration files

  • Well, Dhall provides something between JSON and a Turing complete language that can make a lot of configuration much quicker to write, if you can hack the functional syntax.

    http://dhall-lang.org/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • starlark

    Starlark Language

  • Trivia note, the bazelbuild starlark readme example shows a rare correct implementation of FizzBuzz, with no unique case for "FizzBuzz".

    https://github.com/bazelbuild/starlark

  • Graal

    GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀

  • Pkl was built using the GraalVM Truffle framework. So it supports runtime compilation using Futurama Projections. We have been working with Apple on this for a while, and I am quite happy that we can finally read the sources!

    https://github.com/oracle/graal/tree/master/truffle

    Disclaimer: graalvm dev here.

  • pkl-go

    Pkl bindings for the Go programming language

  • sadly the Go implementation is bloated as hell:

    https://github.com/apple/pkl-go/blob/main/go.sum

    no thank you.

  • edn

    Extensible Data Notation

  • > was utterly surprised how no one ever apparently has thought to create a configuration/templating system that's basically a fancy library on top of Scheme.

    There's Clojure's extensible data notation: https://github.com/edn-format/edn

  • pkl-pantry

    Shared Pkl packages

  • More poking around in this; it'd be great if things like

    https://github.com/apple/pkl-pantry

    Had more documentation. Like there's a prometheus template; is that for use only in k8?

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • copybara

    Copybara: A tool for transforming and moving code between repositories.

  • Step two of installing Copybara is to install Bazel [0], so that doesn't exactly contradict my claim that if you're not already using Bazel you probably won't use Starlark.

    [0] https://github.com/google/copybara

  • graalvm-demos

    This repository contains example applications to illustrate the different capabilities of GraalVM

  • cel-spec

    Common Expression Language -- specification and binary representation

  • My employer uses a combination of Protocol Buffers (for the config schema definition) and Bazel/Starlark (for concrete instantiations). Configs are validated at build time and runtime using CEL (https://github.com/google/cel-spec).

  • simplelanguage

    A simple example language built using the Truffle API.

  • Truffle has no opinion on how you parse the sources. It cares about how you execute them from an intermediate Truffle guided representation produced by the parser.

    In other words antlr and truffle are a great fit. We even use this pairing for our example language simplelanguage.

    https://github.com/graalvm/simplelanguage

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts