DEV Community

Cover image for 🚀 YAMLpp: An DevOps Project is Making a Big Leap Forward
Laurent Franceschetti
Laurent Franceschetti

Posted on

🚀 YAMLpp: An DevOps Project is Making a Big Leap Forward

If you’ve ever worked with YAML at scale, you’ve probably hit the same wall: YAML is great for configuration, but it’s static. Too static. Real‑world systems need dynamic behavior — templating, reuse, conditional logic, environment‑dependent values, and the ability to generate multiple YAML outputs from a single source of truth.

A few weeks ago, YAMLpp was introduced as a macro language for dynamic, self‑generating YAML. It extended YAML with variables, conditionals, loops, imports, and even Python integration. It was a promising idea… but the implementation was early, experimental, and not yet ready for broader adoption.

That has changed.

Today, YAMLpp has quietly taken a major step forward, toward being a fully feature language.
Here’s what’s new.

✅ A more robust execution model

YAMLpp’s macro engine manipulates the YAML tree itself, not just text. This is powerful, but it also means the interpreter must be extremely disciplined.

Recent improvements include:

  • Better separation between parsing, evaluation, and emission
  • More explicit handling of Jinja expressions
  • Cleaner error messages
  • More deterministic behavior across Python versions
  • Extensive testing

This is the kind of progress that makes YAMLpp feel less like a prototype and more like a language you want to trust in production.

✅ Documentation that reflects reality

The ReadTheDocs site has been updated to match the current state of the project. The original DEV.to article introduced the vision; the docs now show how to actually use YAMLpp today.

This includes:

  • Clear examples
  • Updated syntax
  • A more accurate description of the macro language
  • A better explanation of how YAMLpp transforms YAML trees

✅ Ability to read databases

You can know load values no only from JSON, YAML or TOML files, but also from relational databases.

This can be done with the .def_sql, .exec_sql, and .load_sql constructs.

See explanation on documentation page.

✅ Exporting files

You can now instruct your script to export files (not only in YAML, but also JSON or TOML), with the .export construct.

See explanation on documentation page.

🎯 Why this matters

YAML is everywhere — Kubernetes, Docker, CI pipelines, IaC, cloud deployments, microservices, ML workflows. But YAML itself hasn’t evolved.

YAMLpp is one of the few projects trying to push YAML forward without breaking compatibility. It respects YAML’s strengths while giving it the dynamic capabilities modern systems need.

If you’ve ever wished YAML could:

  • reuse values
  • generate multiple files
  • adapt to environments
  • include logic
  • import other YAML files
  • integrate with Python

…YAMLpp is worth watching again.

✅ Want to explore?

The project is still small, but the ideas are big — and the recent progress shows that YAMLpp is entering a new, more mature phase.

If you’re interested in dynamic configuration, DSLs, or YAML tooling, now is a great time to take another look.

Top comments (0)