Crystal Track Update for January 2023!

Crystal blog post 2023/2/1

The first month of the year has passed and there has been a lot of stuff going on the crystal track.
I would therefore like to share that with the community.

New exercises

  • High Scores, an exercise about getting information from a collection of scores.

  • Rotational Cipher, a classical cipher your goal is to rotate the letters in a sentence based on a key.

  • Resistor Color Trio, this exercise is a sequel to resistor color dou and adds the multiplier part of a resistor band.

  • Word Count, this exercise is about counting how many times each word appears in a sentence.

  • Binary Search, another classic, the goal is to generate a binary search algorithm, Binary Search is a fast way of finding a number in a sorted collection of numbers.

New tooling

I spent big parts of this month rewriting/updating/adding tooling to the track.

New generator

The biggest part of this “tooling upgrade” I spent on a brand-new generator. The generator is used to create test files(spec files) based on the problem specs repo, it is meant to reduce the time a maintainer needs to spend updating spec files after changes on problem specs.

The new generator is totally rewritten with a modular design, it features support for: toml files, additional-json, and a built-in formatter.

The reason the generator was rewritten was that the old generator had some difficulties generating tests for some exercises, therefore I came up with a new design that is heavily inspired by the python generator, which uses an individual template for each exercise. Which makes the generator extremely modular and can thereby generate tests for a higher percentage of exercises.

Updated ci

A new ci test was added, it is made to check if an exercise spec file is the same as the spec file generated by the generator. A big shout out to @IsaacG for writing this script.

The ci tests were separated, this was mainly done to reduce the time it takes for the ci to run. Shout out to @IsaacG for helping with this also.

Test runner

A new script for the test runner was added, it is meant to be able to run through all of the exercises and see so all the examples pass with the spec files. This script was mainly done to faster and more securely ensure that test-runner updates don’t break anything.

A small fix to the test runner was also applied but shouldn’t affect users using the test-runner through the website.

Updated exercises

We have updated some exercises with new tests, which means that some solutions may brake. You can get the updated tests and rerun the tests to see if your solution passes the new tests.

  • Flatten array

  • Isbn verifier

  • Isogram

  • Panagram

  • Prime-Factors

  • Protein-Translation

  • Resistor-Color-Duo

  • Largest-series-product

  • leap

  • Luhn

  • Matching-Brackets

  • Roman-Numerals

  • Series

  • Forth

  • Triangle

  • Allergies

  • Anagram

  • Bob

Deprcaited exercise/exercises

I made the decision to deprecate the react exercise, the reason to that is that the exercise is broken on the test-runner. I decided to depreciate it instead of fixing it at the moment to prioritize more important content, but the exercise will likely be coming back soon.

Updated snippet extractor

The snippet extractor has been updated to remove comments and imports from snippets.

Old:
image

New:
image

Opening up contributions

I have made the decision to start accepting contributions on the crystal track since now I got the basic tooling up and running which is a big part of being able to contribute to the track (this only applies to the main repo, not the test-runner).

Although if there are any contributions bigger than a fix, I still do recommend sending me a message on slack or opening up an issue on github to avoid multiple people working on the same thing and also so I can verify that things go in line with how other stuff has been done on the track.

Miscellaneous

A big portion of exercises has got their stub file updated with a bit more hints as to what you are supposed to do, this is mostly applied to the easier exercises.

Multiple exercism/crystal documentation has been updated to be more up-to-date with the current state of crystal.

Updated readme page:

Thanks to @BethanyG for allowing the crystal track to use her template.

Need mentors

It is quite often a queue on the crystal track and sometimes it leads to the waiting time for some mentoring request to be quite long. I am very thankfull for all of the current mentors and what they are doing. Although there is space for more mentors and if you know crystal and wants to mentor people so are you super welcome.

What is coming

In this section will I list some stuff that is being worked on/planned. Although everything listed here should not be seen as “confirmed” to arrive.

  • More practice exercise

  • Updates to current exercises

  • Updated test-runner to crystal 1.8.x

Next month I will have a bigger focus on crystal-lang to hopefully get some features needed for the crystal-track.

7 Likes

Congratulations on that milestone. Very nice! That seems like a herculean effort that you have undertaken.

2 Likes

Wow! Awesome work @Meatball :raised_hands:

Amazing work. Thanks so much :blue_heart:


@ErikSchierboom @jonathanmiddleton can you walk @Meatball through the Site Updates UI pls? (We should probably be doing this for a whole host of recent maintainers!)

1 Like

Incredible work - well done indeed. :clap: :smiley:

1 Like

…and not so recent maintainers. I’d love to get an overview of that as well, so that I can showcase all the great work @Meatball has also done for Python!

1 Like