Skip to content

Understanding "v0"

The domain of YAML in the world of programming is vast and varied.

YS intends to continually grow to meet YAML's needs as new use cases arise.

By now you should be aware of the "v0" syntax that is required in various places in YS.

The "v0" is meant to declare the YS API version being used. At some point soon, v0 will be declared stable and a new version of the language will begin development. At that point, no breaking changes will be made to the v0 syntax, thus all v0 YS / YAML files will continue to work indefinitely.

Any new version of YS is free to break compatibility with the previous versions, while still allowing previous versions of libraries and files to be used.

The v0/v1 Story🔗

You might expect that the next new version after v0 would be v1, but YS v0 is robust enough to be named v1 and also declared stable at the same time. This eliminates the notion that a stable v0 isn't production ready.

The truth is that v0 is already a very capable language and very few things should change before v0/v1 is declared stable.

Roadmap to v1 Stable🔗

Here's a list of the things that we want to add or change before the v1 release:

  • Change the loader bindings (Python, Rust, etc) load() function to not allow code evaluation by default.

We want full capabilities configuration support, but this is the minimum required to be able to declare v0/v1 stable.

  • A basic configuration system for YS files.

This will allow for the configuration of the YS loader and other things.

  • Use of external dependencies in YS files.

We want v0 to be able to declare its dependency libraries from GitHub, Maven, local files and other sources.

  • Internal restructuring of the built-in libraries.

We want to review the internal library names and function names and signatures to make sure they are consistent and easy to use. A few functions might be renamed, changed or removed.

  • Add support for v1 to be interpreted as v0 in all cases.

This is rather minor, but obviously needs to happen before v1 is declared a stable equivalent to v0.

We'll add to this list as necesary blockers are identified.

Overall v0 is quite stable and we want to make the v0/v1 stable release as soon as possible.

Places where "v0" is required🔗

  • YS mode tags!YS-v0, !yamlscript/v0, etc.
  • The #!/usr/bin/env ys-0 shebang line. Here we use ys-0 rather than ys-v0 because ys-0 is the actual name of binary found in PATH.