Skip to main content


I'm glad to announce the release of version 2.50 of #snac, the simple, minimalistic #ActivityPub instance server written in C. It includes the following changes:

Incoming posts can now be filtered out by content using regular expressions on a server level (these regexes are written in the filter_reject.txt file at the server base directory; see snac(5) and snac(8)).

Improved page position after hitting the Hide or MUTE buttons (for most cases).

Use a shorter maximum conversation thread level (also, this maximum value is now configurable at compilation level with the MAX_CONVERSATION_LEVELS define).

Fixed a bug where editing a post made the attached media or video to be lost.

The way of refreshing remote actor data has been improved.

Posting from the command-line now allows attachments.

Added defines for time to enable MacOS builds (contributed by andypiper).

https://comam.es/what-is-snac

If you find #snac useful, please consider buying grunfink a coffee: https://ko-fi.com/grunfink

This release has been inspired by the song The Raven by #CarolineLavelle.

#snacAnnounces

in reply to The Real Grunfink

#snak is really an impressive work, @grunfink.

Looking at the code I wonder where the "backported" xs library comes from: it looks very clean and nice...

Also, I've never seen C headers used for implementations: it's a clever trick that reduce the gap between #C and a more advanced language like #Oberon (:-D) but I wonder why you coded it this way.

in reply to Shamar

Thanks for the nice words.

The xs is an intentionally lightweight library I (with the help of some friends) started for a very different project that never was. As it adds some niceties to C coding, I use it everywhere. It's mostly feature-complete now, but I fix and add some things occasionally. These days, #snac is mostly its main user, as other projects that use it are pretty irrelevant.

Using C headers both for implementations and prototyping is somewhat of a perversion 😆, but it simplifies immensely sharing code between projects, because you don't have to care about building libraries (static nor dynamic) and their operating system idiosyncracies. You just drop the .h in your project, include it and it's done. The reason: simplicity. If I had a motto as a developer, simplicity would be.

This website uses cookies to recognize revisiting and logged in users. You accept the usage of these cookies by continue browsing this website.