Hey everyone, after almost a year of work I'm very excited to announce Irdest release v0.6.0! This is probably the biggest update to Irdest (and in particular the router ratmand) since the beginning of this project. In this e-mail I want to highlight some of the changes and outline the future of development from here on out. Architectural changes --------------------- The biggest change in our architecture is the change from "discrete" messages to streamed messages. Previously, when trying to send a 2GB payload ratmand would load all of it into memory, blockify it, encrypt it, slice it, then send it. This had the massive limitations that the router had to hold the whole message state in memory, and any error that occured during transmission lead to data loss. Not to mention that the router could easily run out of memory and crash. This has now been changed. Every operation in ratmand is a stream, no more than a few dozen megabytes are stored in memory at a time, and things are streamed to and from a database journal on disk. This _can_ currently become quite large (several GB), which is something we will be improving in future. It also means that the router crashing (or being killed by external forces) half-way through a send procedure now is a recoverable scenario. User/ developer facing changes ------------------------------ The client facing API has been completely overhauled, ditching protocol buffers in favor of a very simple hand-rolled header-payload frame format (called "microframe"). The Rust client library implementation (libratman) handles encoding and decoding of all of these payloads, but the format is simple enough that alternate implementations won't be difficult to write for third-party developers. There's some documentation on this format in the developer manual. Additionally we have now split the CLI from a single tool into two: ratcat, responsible for sending and accepting message streams, and ratctl, responsible for managing addresses, subscriptions and streams, accessing peer and system diagnostics, and in future managing contact aliases and other subscriptions as well. In summary ---------- Overall this is a very exciting release of Irdest. Not all components have been updated to the new APIs and the main focus of development has been on making ratmand, ratcat, and ratctl as stable and easy to use as possible. If you're interested in a full breakdown of the changes you can check out the changelog [1] for this release. And as always, you can download the new version installer from our website [2]. It's recommended to delete any existing state from ~/.config/ratman, ~/.config/ratcat, and ~/.local/ratman before installing this version. While we can't promise stability guarantees for the on-disk state just yet, this is a huge step forward to a stable release of Irdest and I'm very excited to see how future development unfolds. I'm also excited to see what people can and will do with this new version. Cheerio, ~ Kookie [1]: https://git.irde.st/we/irdest/-/blob/0.6.0/CHANGELOG.md [2]: https://irde.st/downloads/