YS Firsts
Remember Your First Time?🔗
Do you remember the first time you wrote a program in a new language? For YS, mine was yesterday!
This is my first post of 2024. I've been working on YS non-stop since the last YS Advent 2023 post. Too busy to write a blog post, I guess.
Yesterday something awesome happened.
Putting out a YS release is a complicated process. It takes me about an hour to do it. Of course I plan to automate it fully but I just haven't had the tuits.
For the last several releases, I've had a text file that listed all the steps so that I wouldn't forget anything. Yesterday I automated that list...
...you guessed it...
...in YS!
The 10 Step Program🔗
Of course I have been writing test programs in YS for a while now. This was the first time that I wrote a YS program that actually does something I need to do on a regular basis.
Without further ado, here is the YS Release Automation Program ⧉.
It's a 10 step program that does everything I used to do manually. I think it turned out pretty nice.
Judge for yourself but let me tell you a bit about it first.
- There are 10 steps to perform.
- If a step fails you can run it again.
- You can indicate which steps to start and end at.
- Reports information about each step as it goes.
- Has a verbose mode that shows you what it has done to various files.
- Has a dry-run mode that shows you what it would do without doing anything.
- Validates its inputs and tries to doublecheck its work.
- Everything is broken up into short and simple functions.
- Execution starts with the main function at the top.
- Shells out to common CLI commands to get things done.
- Uses multiline literal scalars with interpolation to make changelog entries.
- Fairly well documented internally with comments.
It's pretty much like a shell script, but written in YS. Given that YS is a functional language with immutable data, perhaps it's more reliable than a shell script. Time will tell.
I also added a Makefile rule to run the program. It supports several variables to control the program and writes the output to stdout and a log file.
Here's the output from a dry-run:
$ make release-yamlscript o=0.1.42 n=0.1.43 v=1 d=1
./util/release-yamlscript 0.1.42 0.1.43 2>&1 | tee -a release-0.1.43.log
Releasing YS v0.1.43 at Thu Mar 14 07:28:19 AM PDT 2024
Step 1) Update '.version.sh' file
+ git -P diff .version.sh
Step 2) Run 'make bump'
+ make bump
+ git -P diff
Step 3) Update the 'Changes' file
+ grep -F -B999 '0.1.42' Changes
Step 4) Update the Change Log files for the binding modules
Step 5) Commit the release changes to git
+ git commit -a -m 'release: 0.1.43'
Step 6) Add git tag for the new version
+ git tag 0.1.43
Step 7) Push the git commit and tag
+ git push
+ git push --tags
Step 8) Run 'make release'
+ make release
Step 9) Run 'make release' for each language binding library
+ make -C clojure release
+ make -C go release
+ make -C java release
+ make -C julia release
+ make -C nodejs release
+ make -C perl release
+ make -C perl-alien release
+ make -C python release
+ make -C raku release
+ make -C ruby release
+ make -C rust release
+ git -P diff
Step 10) Publish the yamlscript.org website
+ make -C www realclean publish
Maybe it's time for you to write your first YS program!
If you do, drop me a line and tell me how it went. YS is still a young language and I'm always looking for feedback.
Other Firsts🔗
Last Monday someone published the first article about YS ⧉.
It was based on YAML core team member Tina Müller ⧉'s recent talk about YAML ⧉ at the FOSDEM 2024 ⧉ which had a section about YS.
The article was accurate and well researched which is a rare thing for YAML in my experience.
Also last week I gave the first 2024 public talk about YS at the Seajure Meetup ⧉ in Seattle. Seajure is a Seattle based Clojure meetup that I started attending last year. The talk was well received and I got some good feedback. The video should be available soon.
Next month YS will be presented at its first conference talk of 2024 ⧉ at the Linux Foundation's Open Source Summit North America ⧉. I hope to see you there!
Future Firsts🔗
There's a few big things in the works for YS this year worth mentioning:
- A YAML Schema DSL that will be used to validate YS evaluation results.
- Compiler source maps for IDE integration and better error messages.
- YS User Documentation (finally).
I'll be back here next week to tell you about all the things that have happened with YS in the last 3 months. So much good stuff. Stay tuned!
YS We Can! — Ingy döt Net