Gosh, it's been such a long time. I regret that this summer is not going how I would've originally planned it because of some complications with my job, but I'm making the most of it. I do have a handful of exciting things to share, and I'm hoping to keep up the hard work on Telodendria.
I won't go into the details here, but Telodendria
v0.3.0 has finally been released after a few delays, although it is on schedule for
v0.2.0, which was released very early, so I'm kind of right on schedule. I am currently hoping to get
v0.4.0 out by the end of this year, but we will see if that happens or not.
I'm not going to hash out all the changes in this section, that's what the change log is for. As always, if you haven't joined #telodendria-releases:bancino.net, that's where you can get concise notifications about new releases.
Cytoplasm is what I'm calling our new general-purpose C library that supports Telodendria. I think
Cytoplasm/README.txt explains it best, so I've copied some of it below.
Cytoplasm is a general-purpose C library and runtime stub for creating high-level (particularly networked and multi-threaded) C applications. It allows applications to take advantage of the speed, flexibility, and simplicity of the C programming language, while providing helpful code to perform various complex tasks. Cytoplasm provides high-level data structures, a basic logging facility, an HTTP client and server, and more. Cytoplasm aims not to only do one thing well, but to do many things good enough. The primary target of Cytoplasm is simple, yet higher level C applications that have to perform relatively complex tasks, but don't want to pull in a large number of dependencies. Cytoplasm is extremely opinionated on the way programs using it are written. It strives to create a comprehensive and tightly-integrated programming environment, while also maintaining C programming correctness. It doesn't do any macro magic or make C look like anything other than C. It is written entirely in C89, and depends only on a POSIX environment. This differentiates it from other general-purpose libraries that often require modern compilers and non-standard language and environment features. Cytoplasm is intended to be extremely portable and simple, while still providing some of the functionality expected in higher-level programming languages in a platform-agnostic manner. In the case of TLS, Cytoplasm wraps low-level TLS libraries to offer a single, unified interface to TLS so that programs do not have to care about the underlying implementation. Originally a part of Telodendria (https://telodendria.io), a Matrix homeserver written in C, Cytoplasm was split off into its own project due to the desire of some Telodendria developers to use Telodendria's code in other projects. Cytoplasm is still a Telodendria project, and is maintained along side of Telodendria itself, even living in the same CVS module, but it is designed specifically to be distributed and used totally independent of Telodendria. The name "Cytoplasm" was chosen for a few reasons. It plays off the precedent set up by the Matrix organization in naming projects after the parts of a neuron. It also speaks to the function of Cytoplasm. The cytoplasm of a cell is the supporting material. It is what gives the cell its shape, and it facilitates the movement of materials to the other cell parts. Likewise, Cytoplasm aims to provide a support mechanism for C applications that have to perform complex tasks.
Eventually it is my hope that Cytoplasm will get a nice spot on the Telodendria website (either its own page or subdomain), and that tarballs for it will be published independently of the Telodendria tarballs, but for now, everything is bundled in with Telodendria.
Here are some things I mentioned in the last newsletter, as well as a few new ones:
hdoc, a simple CLI tool for generating
manpages by parsing a C header file. This tool is very primitive, but suits Telodendria's needs just fine.
You may have noticed that things have been rather quiet around here. While I haven't committed much or written a lot of newsletters, I've still been hard at work; every free minute I have is spent on Telodendria. At the moment, I've been trying to debug some nasty memory corruption bugs, but I simply cannot figure out how to reliably reproduce them. I cannot pinpoint what makes the issue happen, because it seems so random. I've torn Telodendria down to basically nothing in my own working directory, and I still can't figure it out because it is so hit-or-miss whether or not I can actually get the issue to show itself. At some point I will put together some documentation on this, but I've been working on this for almost a month now, so I think it's time to just move on and deal with it later. I can assure you all that I will not release
v1.0.0 with this still being a problem, but for now, I think my limited energy is best spent moving Telodendria forward and building out more of the Matrix specification. I do not want all development to stall just because of this, I have to keep moving on, particularly because I don't have very much time to spend on this project.
[~] /_telodendria/admin/config endpoint [ ] Update only certain values [ ] Client-Server API [ ] 6: Filtering [ ] 7: Events [ ] 8: Rooms [~] 9: User Data [x] Profiles [ ] Directory
This is the fun stuff! I'm excited to get into this, because it is the meat of the specification. With the next release, Telodendria just might be usable for local user communication, which is really amazing to think about.