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).
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.
Shamar
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 () but I wonder why you coded it this way.
The Real Grunfink
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.