Here we tell the community what’s been on the team’s plate for the last couple of months, focusing on those aspects that aren’t visible in Crystal’s main repo.
Documentation improvements
We directed efforts to improve the documentation, since that’s where users are guided to when first learning the language. This is part of an on-going task to improve newcomers experience with the language.
Shameless plug #1
Our @ftarulla is writting about his experience with Crystal in his dev.to channel that you can follow.
A long and exciting hiring process
As you probably know already, Crystal’s been actively working to grow its team. We can’t share the news just yet, but it was interesting to see many familiar faces in the process! Hiring processes can certainly be intensive! And we’re not even finished yet… 🥵 But it will definitively be worth the effort. More on that on a separate post 😀
Shameless plug #2
Manas.Tech is still hiring in a number of other positions!
Garbage Collection
A significant part of the time of an application goes into allocating/deallocating objects, a task that is handled by the garbage collector. Currently, Crystal uses the Bohem-Demers-Weiser collector, a great collector that works fine for a vast majority of applications. However, we are seeing two areas with potential for improvements in this regard:
- Can a modern collector perform better for some applications?
- Can we own the collector and improve its performance exploiting the internal knowledge of Crystal’s memory mapping?
We started researching using an existing garbage collector based on IMMIX, created for Crystal by former core-team member Julien Portalier. Currently, we’re at the point in which it’s usable in Linux, to the point that we can compile Crystal with it.
As a side benefit, adding a second collector gives us the experience to eventually incorporate the still green Memory Management Toolkit, which aims at having different collectors to pick from using a unified interface.
That’s all for now, keep it safe… and fast!