Skip to content

Wrapped 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 YS Advent Calendar🔗

It's also time to wrap up this year's YS advent holiday season. Let's put a bow on it and deliver it to the world.

First we should take a moment to reflect on what we've learned this month. We can also take a look forward to what's coming up in the New Year.

The 50,000 Foot View🔗

We'll start with a high level look at the landscape YS promises to be.

  • YS is new programming language
  • You write YS in YAML
  • JSON is also YAML
  • All JSON and most YAML is valid YS
  • YS compiles to Clojure
  • Clojure is a Lisp and a Functional Programming (FP) language
  • YS a functional language with a Lisp model
  • YS ia a complete language (since Clojure is)
  • YS's engine is a native binary executable
  • No JVM involved; no slow startup
  • YS starts fast and runs fast
  • YS programs can compile to binary executables
  • YS has a clean syntax that feels Pythonic
  • YeS-Expressions offer infix operators and prefix function calls
  • Can also be written in a full-Lisp style
  • Or full-non-Lisp or anywhere in between
  • There are many ways to write the same expression in YS
  • YS embeds cleanly into existing YAML files
  • Good for simplifying and enhancing existing YAML files
  • Include parts of other YAML files into any part of a YAML file
  • Map, filter and transform YAML data to more YAML data
  • YS can use libraries written in Clojure or YS
  • Lots of existing Clojure libraries will work with YS
  • YS libraries can be written in YS
  • YS can be used as a scripting language
  • YS provides the ys command line tool
  • Compile YS files to Clojure code
  • Compile YS files to native binary executables
  • Convert between YAML, JSON and EDN
  • Eval YS expressions from the command line
  • YS provides the libyamlscript shared library
  • Bindable to most programming languages
  • Growing number of languages have YS binding modules
  • Load plain old YAML files more correctly
  • Load YAML files with embedded transformation code
  • Run subtasks written in YS from another language

The State of the YS🔗

YS is a year and a half old from inception, but it really found its direction in July 2023.

It is now a working programming language with:

  • A compiler
  • A mature runtime
  • A mature standard library
  • Binding modules in several programming languages
  • Regular binary releases for Linux, Mac (x64 and ARM)
  • Simple one-line installer commands
  • Example programs on Rosetta Code

Many things remain to be done:

  • Windows support
  • Finish the v0 compiler
  • Test suite with complete coverage
  • User documentation and tutorials
  • Binding modules for most modern programming languages
  • A YS module registry

to name a few.

What Lies Ahead🔗

The complete scope and trajectory of YS is unknown. I'm confident that it will be used in ways I can't even imagine.

This notion is built into the design of YS. Stating the explicit API version (v0) is a mandatory part of the writing and using YS code. Version 1 can completely break away from version 0, and no existing code will be affected.

I already have exciting plans queued up for the next year:

  • IDE support (Calva + source maps)
  • nREPL server support
  • Top notch error messages
  • Cross language shared library auto-binding
  • Use case tutorials and examples
  • Simplifying massive YAML deployment files
  • Using YS for better CI/CD workflows
  • Task automation with YS

The End of an Advent🔗

I hope you've enjoyed this year's YS Advent Blog. I enjoyed writing it but I'm relieved that it's finally over. It's one thing to write a blog post every day and another to be working around the clock trying to implement everything you're writing about.

Those things I've listed above deserve more explanation. Perhaps they each deserve their own blog post! I look forward to telling you about each of them in detail. But...

I'm going to take the rest of the year off from blogging about YS. I'll keep working on the language itself because that's just pure fun for me. (Usually.)

I'll be back in January and I'll try to put out a blog post every week or two. From now on I don't have to blog about things that I just barely got working after burning the midnight oil.

I'm so excited about this language!!!

I knew that doing this advent calendar was going to be a huge challenge, but I also knew that it was just the thing to drive YS forward. The alternative was to wait a full year for Advent 2024. Thank goodness for my ADD. (Advent Driven Development)

Happy Holidays to you and yours.

I'll see you in the future.

Don't forget your sunglasses.

The future is bright!!!

— Ingy döt Net and the YS Elves