Program in YAML — Code is Data
YAMLScript is a new functional programming language with a clean syntax that is also 100% valid YAML. It was designed to be easily embedded into existing YAML files in order to provide the logic, interpolation and data transformation capabilities that many YAML users need. Created by YAML inventor and lead maintainer, Ingy döt Net, YAMLScript solves these needs beautifully for all YAML users and uses.
YAMLScript is now available as a programing language learning track on Exercism. It's a great way to learn YAMLScript and get feedback from experienced mentors. Check it out!
If you work with apps and frameworks that use YAML for configuration, you can simplify your complex YAML files using YAMLScript, even if the app or framework does not support it natively. YAMLScript lets you include data from external files and other sources, make use of hundreds of existing standard functions, and even define your own variables and functions. You can filter, map, merge, reduce, generate, concatenate, interpolate and manipulate your data as you wish. YAMLScript provides these things with syntax that is minimal and unobtrusive, keeping your clean YAML data clean.
Slides and information from Ingy's KubeCon 2024 talk are available here. The highlight was HelmYS a new Helm post-renderer that lets you template Helm charts with YAMLScript (which is actual YAML).
Like many new languages, YAMLScript was built over an existing robust language, Clojure, which in turn was built over Java. The power of Clojure and Java is available to YAMLScript users via the YAMLScript runtime interpreter, ys
. However, the ys
command is compiled into a single standalone native binary executable file. This means that No Java or JVM installation is required to use YAMLScript, and startup/execution speed is very fast.
YAMLScript also produces the libyamlscript.so
shared library. It has binding modules for 10 programming languages including Go, JavaScript, Python and Rust, with many more on the way. These modules can be used in your programs to load normal YAML files as well as YAMLScript enhanced ones.
There are many ways to use YAMLScript:
- Simplify your existing YAML configs
- Works great with CI/CD, Helm, Docker, Ansible, etc.
- Check out HelmYS, a tool for using YAMLScript in Kubernetes Helm chart templates painlessly.
- Load YAMLScript (or YAML) in your programs
- Available in 10 programming languages (and counting)
- Program in YAMLScript
- Learn how at Exercism
- Script Automation with YAMLScript
- Many used in the YAMLScript repository
- Compile YAMLScript to binary executables
- Fast, standalone, no-source software distribution
- Query and Transform YAML (and JSON) data
- Use the
ys
command line tool similar tojq
oryq
- Use the
YAMLScript Resources
YAMLScript Links
- Nov 2024 KubeCon Talk and Info
- Jun 2024 TPRC Talk
- Apr 2024 OSS/NA Talk
- Mar 2024 TheNewStack Article
- Mar 2024 Seajure Talk
Recent Posts
The Fall of YAMLScript!
(or Exciting YAMLScript News for Fall 2024!) Greetings! It's been over 3 months since the last blog post here. Just to be clear, the YAMLScript project is alive and fantastic! We've just been busy as...
read articleGo Julia!
Last week two new language bindings were added to the YAMLScript family: Go and Julia. Go The Go binding has been a long time coming. Several people have been working on it this year but it was Andrew...
read articleDr. StrangeYAML or How I Learned to Stop Worrying and Love the LLM
Well now, what happened is, uh, one of our data scientists, uh, well, he went a little funny in the head. You know. Just a little funny. And uh, he went and did a silly thing. Well, I'll tell you...
read articleYAMLScript Spring Update
It's been a while since I let you know what's been happening with YAMLScript. I've been busy working on it every day this year and I have a lot to tell you about! YAMLScript Activity in 2024 Let me...
read articleYAMLScript Firsts
Remember Your First Time? Do you remember the first time you wrote a program in a new language? For YAMLScript, mine was yesterday! This is my first post of 2024. I've been working on YAMLScript...
read article2023 Advent Index
Welcome to the 2023 YAMLScript Advent Blog! Dec 24 - Wrapped and Ready Dec 23 - Perl to Rust Dec 22 - Flip Flops Dec 21 - YAML, Python and the Holy Graal Dec 20 - Godspeed Dec 19 - Reindeer All...
read articleWrapped and Ready
The Elves have everything wrapped up. Literally! Tonight's the big night. It's Time to Deliver! Welcome to Day 24 of the YAMLScript Advent Calendar It's also time to wrap up this year's YAMLScript...
read articlePerl to Rust
When Santa is doing his job in the Luxembourg area, I've always wondered how he gets from Perl to Rust. Maybe he takes this route! Welcome to Day 23 of the YAMLScript Advent Blog! A couple of days ago...
read articleFlip Flops
Can you imagine Santa walking around in flip flops? I've never been up to the North Pole, but I'm pretty sure there's no beaches. I always pictured Santa wearing moon boots around the...
read articleYAML, Python and the Holy Graal
Which has a greater airspeed velocity... an unladen swallow or Santa's sleigh? Well, that depends... are we talking about an African or European swallow? Huh? Welcome to Day 21 of the...
read article