FAQ

How do you pronounce YS?

We like to say "wise" since its how you might pronounce the plural of "Y". You can also say "why-ess" for "Y S" or the long name for YS: "YAMLScript" ("YAML (rhymes with camel) Script").

YS has many side projects like HelmYS ("helm-wise") or SchemaYS ("schema-wise").

Is YS really YAML?

Yes. Empirically. The YS compiler has 7 stages (phases) to transform YS (YAML) into Clojure. The first phase is call parse and it currently uses the SnakeYAML Engine parser ⧉ code for this process.

Who created YS?

YS was created by Ingy döt Net, a founding creator and current maintainer of the YAML Data Language ⧉.

What is the preferred file extension for YS files?

The preferred file extension for YS files is .ys, but you can use .yaml or .yml if you prefer for most files. The ys command line tool doesn't look at the file extension and will treat them all the same.

If you are enhancing an existing YAML file, there is no need to change the file extension to .ys. You can just start using YS features in the file.

On the other hand, YS libraries loaded with the use function are required to have the .ys extension.

Clojure is a JVM language. Does YS need the JVM?

No. YS is written in Clojure and exposes the Clojure/Java runtime ecosystem, but there is no JVM involved. This is thanks to the GraalVM ⧉ project's native-image ⧉ which can compile anything compiled to jar files into a standalone native binary executable or shared library.

This is how the ys binary and the libyamlscript.so shared library are created.

Note

Even the YS build system does not require you to have any Java or Clojure stuff installed. It simply downloads a GraalVM tarball into /tmp, and the Makefile takes care of everything without leaving any mess behind.

Do I need to know Clojure to use YS?

All YS/YAML code is compiled to Clojure and evaluated when you run or load it.

That said, you can get pretty far with YS without knowing any Clojure. Just read the docs and look at the examples.

To become a YS expert, you will need to know Clojure (and YAML) well.