An Update and Crystal Operation Citrine

Starting words

I have been quiet for a while; I have been busy with various projects. I am in my final year in high school, which has meant quite a bit of work, but I have also worked on other open-source projects. For example, I have ten approved PRs for Crystal 1.13, which includes some nice improvements.

But in the future, I will likely start university after the summer. Therefore, my future schedule is a bit uncertain, and if I am allowed to speculate, do I believe Crystal 2.0 is approaching. Therefore, as for future updates, I am a bit uncertain. But I am planning an update in August for Crystal 1.13. And I have to announce that I am…

Signing off as swift maintainer

This is something I have been planning for a while, and I notified Jeremy back in January. There are many reasons why I am doing this, the main one being time. I found myself pushing Swift updates later and later. The Crystal updates have also suffered delays, but Swift has not received much in the way of updates since the fall of last year (bug fixes have been merged, but no content has been added).

My goal is not to hinder evolution on the track by being a maintainer who doesn’t have the energy or the time to be in such a position. But there are other reasons for this also, one being that Swift isn’t my favorite language (don’t take me wrong, it is a great language but not my favorite), and I don’t work enough in it. Another reason is that the Swift test runner is messy. The last test runner was unstable and incompatible with newer versions. I decided to write a new one that was more stable, but Swift had some issues that made it so my design could have been better. It ended with me patching the test runner, so it became stable, which took a lot of time. The result was a more stable test runner, but it could have been better. When Swift 5.9 landed, I found that the test runner had decreased stability (thereby, the test runner still rocks 5.8). I haven’t tested 5.10, but it could be even more unstable.

Therefore, the test runner will likely require another rewrite with another architecture.

However, for some good news, I have a couple of content PRs lying on the track, most of which are ready to go. My plan is to work on the generator and some new content for what I will dub The Final update, as the name implies. It will be the last update from my side. Note that the test runner will remain untouched, so the track will continue on Swift 5.8. I will still be reviewing PRs until August for the track.

My current time frame for maintainership on the track:

Late June - release of the final update
July - Possible bug fixes
Late July - Go back to auto-closing prs
August - Step down from maintainership

So why am I telling this long story? If you want to be the maintainer of the track, I will have a period where you can go side by side with me, and I can explain all of the different parts of the track. As I have already detailed, this is no easy task, but it is possible if you are up for it. If you want to be a maintainer, I recommend contributing a bit first, and then an onboarding process can start. The process should begin quite soon since I am stepping down in August.

Crystal operation Citrine

As I have already detailed, I have been short on time, so this is a mini update. Instead of waiting, I decided to push this now and gear up for a larger update in August.

New Exercises

Courtesy to @adamazing, @ryanplusplus and @kahgoh for implementing the following exercises for #48in24:

  • D&D Character
  • Food Chain
  • Zebra Puzzle



The representer now ensures that the order in the files run is always the same; this issue sometimes causes the ci to fail.

The representer now uses Crystal 1.12.1. Note that there is no new release version (a version that you can download; the exercism system doesn’t use that system); instead, that will arrive in the next update (because I forgot to edit a file).

Test runner

The test runner was updated to Crystal 1.12.1

As with other updates, this drops Crystal 1.7.


I have started working on improving the older concepts.

This update has a couple of fixes, but most changes revolve around the language used.

The current updated concepts are:

  • Basic
  • Bools
  • Numbers
  • Number Types
  • Classes
  • String
  • String methods

Practice exercises

There has been quite a large sync to the main repo, a big courtesy to @ErikSchierboom.


There are a couple of concepts already in the works which I hope can expand the amount of concepts available, iteration and a couple of more concepts should be ready for August. I am also planing to finish the work of revisitng old concepts.

I have also started working on a new version of the analyzer which will add Crystal 1.13 support, as well as more documentation and an over all cleanup of the code used. I am also looking at exprimenting on a new design of adding concepts comments.

The document generator am I planing on giving some nice new improvments and fixes.

An optional test case system. for some extra test cases you can run locally.

Lastly, am I planning on looking into being able to run the test runner in parallel, tjos for being able to test exercises which uses paallel concepts.