"Real" stuff written in Crystal

I saw that documentation says that Crystal is a general purpose language, but most use-cases I saw are related to web-development. I’m curious if there is any databases, drivers, VMs/unikernels/OSs, etc. written in Crystal.

2 Likes

First thing that comes to my mind is awesome-crystal

Note: I believe above link doesn’t show-case all of the things built with Crystal, but should be used as quick reference to get a glimpse of projects/tools/libraries that have enrolled themselves in there.

HIH

1 Like

The project is well known according to GitHub Star, but not sure if it is real enough.

2 Likes

Lavin MQ (message broker) is written in Crystal https://forum.crystal-lang.org/t/lavinmq/6705

6 Likes

I have a TUI-based music player written in Crystal, a SoundFont synthesizer, and a system monitor.

2 Likes

Because web is eating the world? I have a small project that’s as webby as they get. A small HTTPS server, with HTML/CSS GUI, using Google for authentication and using REST/JSON to talk to two web services. But the real goal is to synchronize bank data to YouNeedABudget. The web is just the delivery platform for a lot of apps these days.

Hell, even my backup program is a service that exposes a web frontend for management.

So it’s natural that web-related is where much of the action is. But as the above posts demonstrate, Crystal is versatile.

I used crystal at the last place i worked at for a daemon that controls some other equipment and interfaced with hardware on a raspberrypi.

works flawlessly and stable for years now.

1 Like

I’ve written several game jam entries in Crystal. Latest is Restless by kipar
Also used it on work for embedded pult gui.
Drivers\Databases\OS may be problematic due to GC, but still possible.

1 Like

I saw that collection of libraries, it has nothing related to my question and contains pretty rubyesque set of libs and wrappers. According to syntetic benchmarks Crystal has performance comparable to Golang, Golang has many databases written in it, but I found nothing for Crystal. I have an idea of developing my own embeddable DBMS (kinda SQLite) and I’m interested in similar projects in Crystal to learn from them. I have no experience with Crystal, but I have ~8y experience with Ruby and ~6y with Golang. I frustrated with Golang, Zig looks too draft and has no async. I don’t like Ruby for its poor performance so I decided to take a look on Crystal, which looks for me as an optimal hybrid between Ruby and Golang.

2 Likes

I don’t think you’re doing justice to this recommendation. awesome-crystal shows some libraries and apps written in Crystal. It shows at least that there are project on many things that are not related to web development.
Of course it’s a limited list.

I know this database backend written in Crystal:

And there are a number of OSs:

Although regarding OS development it’s important to note that they typically cannot use Crystal’s standard library because it’s too heavy for a kernel (think GC, for example).

6 Likes

Embedded as in microcontroler? or as in single board computer running linux kernel?

Second.
Microcontrollers in Crystal would be my dream (right now i’m programming them in C). I’m glad to see things like AVR support done, so maybe one day this would become a reality.

Same here :slight_smile:
If anyone figures that one out, let me know.

Sad, none of them in the list is live development in recent 5~7 years.

1 Like

We use this at my company in production to live sync files between 2 hosts

4 Likes

I recently ported the Sup email client (which is written in Ruby) to Crystal. There are few missing features (such as GPG support and most of the hooks), but otherwise it is complete enough that I’ve been using it full-time as my email client for the last couple of months. I don’t expect anybody else to want to use this thing; I embarked on this project for my own education and winter amusement. Source here: https://github.com/bloovis/csup

3 Likes

Hi, current master branch of poni not work if sync on directories for localhost only, i create a PR for fix the bug, please check.

I recently wrote what I consider a real program, really small since I’m new to the language. It parses Traefik routers api to generate links dynamically: