Skip to content

Go Julia!

Last week two new language bindings were added to the YS 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 Pam ⧉ who finally got it over the finish line.

Go is a big user of the YAML data language, so we're happy to be able to provide this library and hope to see it used in many Go projects.

Julia🔗

The Julia ⧉ binding was a bit more of a recent surprise addition. A few weeks ago a Julia hacker dropped by the YAML Chat Room ⧉ to ask some questions about YAML. I ended up asking him more about Julia and if he could help write a YS binding.

He invited Kenta Murata ⧉ to the chat room and Kenta said he could do it for us. Then Kenta disappeared for a few weeks. Last week he came back with a fully working Julia binding for YS!

Fun fact: Julia is Clark Evans ⧉ favorite programming language! Clark is one of the original authors of the YAML data language.

YS Loader Libraries🔗

These YS language bindings are intended to be an alternative YAML loader library for the respective languages. They can load normal existing YAML files in a consistent way, and common API across all languages. They can also load YAML files with embedded YS code, to achieve data importing, transformation, interpolation; anything a programming language can do.

The current list of YS loader libraries is:

Join the Fun!🔗

If your language is missing a YS binding or you want to help improve one, please drop by the YS Chat Room ⧉ and we'll get you started.

All of the bindings are part of the YS Mono-Repo ⧉ on GitHub. If you look at the existing bindings, you'll see that they are all quite small. You'll need to learn about basic FFI (Foreign Function Interface) for your language, to make calls to the YS shared library libyamlscript, but that's about it.

It's a great way to get started with a new language project.

Some Future Plans🔗

There's a lot of upcoming work planned for YS. I've mapped some of it out in the YS Roadmap ⧉.

Currently YS (written in Clojure ⧉, which compiles to JVM bytecode, which…) compiles to a native binary interpreter using the GraalVM native-image compiler ⧉. This is great for performance and distribution, but it's not great for portability, limiting it to Linux, MacOS and Windows.

The JVM is a great platform for portability, so we're planning to make a JVM version of the ys YS interpreter. Of course, having YS available as a JVM language is also a good thing for Linux, MacOS and Windows users.

We also want to make WebAssembly ⧉, JavaScript and C++ versions of the YS interpreter.

And of course we still want to get to our goal of 42 language bindings!!!

Lots of fun stuff to explore!