Skip to content

Go Julia!

Last week two new language bindings were added to the YS family: Go  External link and Julia  External link .

Go🔗

The Go  External link binding has been a long time coming. Several people have been working on it this year but it was Andrew Pam  External link 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  External link binding was a bit more of a recent surprise addition. A few weeks ago a Julia hacker dropped by the YAML Chat Room  External link 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  External link 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  External link 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  External link and we'll get you started.

All of the bindings are part of the YS Mono-Repo  External link 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  External link .

Currently YS (written in Clojure  External link , which compiles to JVM bytecode, which…) compiles to a native binary interpreter using the GraalVM native-image compiler  External link . 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  External link , 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!