rpclib 1.0.0 is finally here. For this release, I’ve also
completed a benchmark suite which measures the performance of Google’s gRPC,
Apache Thrift, Cap’n’Proto RPC and rpclib in certain situations. To highlight
the pure overhead of calls via RPC, the performance of equivalent
code through direct function calls is also included.
I also meant to include a comparison of APIs, but I realized halfway that
analysing both the results and the APIs is going to be extremely lenghty, so
I decided to split the post into two parts, the first part being the results, and
the second part being comparison of the APIs. I’ll put the link here once that
post is published.
Note that apart from rpclib, these RPC solutions are not strictly
just “libraries”, rather they are complete packages with code generators and library
implementations for various languages. For the sake of simplicity,
I’m going to refer to them as libraries anyway.
After reporting an issue on the siplasplas issue tracker, I came accross conan again there, because siplasplas is actively moving it dependency handling to it.
I was well aware of conan’s existence, but I haven’t used it and I was a bit sceptical after biicode died. Nevertheless, I decided to take look again and now I’m convinced that there is subtantial value in using conan. In this post I’m going to summarize my experiences with it.
The 361st commit in the rpclib repository marks the first public release of rpclib, the project I’ve been working for the last ~11 months (294 days, to be exact). What started off as “throw this together in a month and then move on to the next thing” became a crazy journey of perfectionism and “I’ll add this tiny feature before release because what would people think if it’s not there”. Breaking and reworking things just for the sake of it. That’s a great way to have a side project to work on, but not a great way to finish it.
I realized this about a month and a half ago and since then, I’ve been working towards a complete
state that I can release. Right now I’m minutes away from pushing the button to upload the
1.0.0-preview1 release. I decided to create a preview before the actual release, because at this point feedback is pretty important.
After unexpectedly losing the contents of my VPS, I recovered the scraps of my blog from the
Wayback machine. I deleted one post, which had a larger amount of screenshots that I had no desire
to recreate (and the post wasn’t so good anyway).
Anyway, the blog is here again, hopefully Google forgives the downtime. I made sure to use the old
links and put extra effort into having the old comments in place.
The blog now runs on Github pages and is based on Jekyll. You can find the source here.
Regarding my VPS service provider: let’s just say, I won’t be recommending that company to anyone, anytime soon.
CMake, the language is not great. It is just not a pleasant tool to work with. Not at all; it feels like it was not designed as a language, but a mere configuration file that sets build options in a compiler-agnostic way. But, it hits many important bullet points for building software and most importantly: “just works”. As a result, it has gained popularity over the years because cmake, the software is quite good.
As it happens often, control structures began to creep into the configuration file. This little if won’t hurt anyone, and look, I can do conditional steps during the build file generation with it! How about a for loop? We don’t even have to add an array type, we can just treat strings as arrays! Regex? Sure, add some Cthulhu curse while you are at it. And so on.