Vieter 0.6.0

Part of the Vieter series

It’s been a while since I’ve released a new version of Vieter. A busy semester combined with a lack of interest in the project has definitely slowed down development. Nonetheless, I’ve got a new release ready for you!

What’s Vieter?

Vieter consists of two central components: an Arch Linux (well, Pacman actually) repository server that supports uploading package archives, combined with a build system to populate this server by periodically building select packages. The goal of this is to completely remove the need for an AUR helper, and moving all build times to the cloud, allowing for smooth updates across as many machines as required.

What’s changed?

This is a rather small update, and it mostly contains a few quality-of-life improvements.

For one, there’s now a Prometheus metrics endpoint so you can integrate Vieter into your existing stack. Currently the metrics are limited to API request timings, but this could be expanded upon in the future.

The API can now filter the list of targets, allowing you to more easily search for specific targets. This functionality has also been added to the CLI.

Builds can now be configured with a timeout, with build containers being automatically killed if this timeout is reached.

Behind the scenes, the codebase has been updated to a compiler commit after the 0.3.3 release, and the cron logic has been rewritten in C using the libvieter library. Agents now use worker threads, meaning they will not spawn a new thread anymore for each new build. Package uploads now properly fail if the TCP connection was closed before all bytes of a file were received. Lastly, the deprecated cron daemon has been removed.

What’s next?

Throughout the last couple of months, I’ve grown more and more tired of the V programming language, and the codebase in general. There’s a lot of technical debt present, and due to the limitations of the language and existing frameworks, I’ve had to resort to questionable practices for a lot of the features (e.g. POST request data as query parameters). Due to this, I’ve decided to restart this project in Rust, under the name rieter. With this, I hope to move away from this technical debt, and build a new solid foundation on which I can further expand this project. I’m not going to be making any promises on when this will be ready to replace Vieter, but I hope to get there soon.


Just picture a very creative ending of this post here ;)

If you’re interested in Vieter, consider joining on Matrix! The source code can be found on my personal Gitea.