Announcing Nickel 1.0, a configuration language written in (and usable from) Rust

304 points yagoham

Dear Rust community, I'm happy to announce the release of Nickel 1.0, a configuration language developed in Rust. It's somehow a generic but domain specific language, if that makes sense, in that Nickel is specialized in generating configuration (e.g. evaluating to YAML or JSON, typically), but is more expressive than pure serialization formats to make the configuration reusable, maintainable and more correct (opt-in static typing and runtime contracts in particular). It cat target any kind of configuration, but the typical use-case would be fairly large and complex one, like infrastructure-as-code deployments or build systems.

Beside being a Rust codebase, I thought it could be interesting to the community because it's particularly easy to use as a native configuration language for a Rust app, thanks to serde. See for example the tests of the deserializer module, which deserialize Rust structs and enums directly from a Nickel source : https://github.com/tweag/nickel/blob/dc6804acd123257460eef60d615da2eb0a8aca78/src/deserialize.rs#L584

Happy to receive any constructive feedbacks and opinions.