Summer Roadmap 2023
Now that I have 6 weeks of employment remaining, my wife encouraged me to come up with something to do for the summer, and possibly after it. This post will list a few ideas I’ve been thinking about.
Next 6 weeks of employment
The roadmap described 6 weeks ago is still mostly applicable. Quick update:
- The blog post I have mentioned has been published. Hooray.
- For the next 6 weeks I will work on making the Zig/Go ecosystem as best as I can. Many thanks to my leadership for understanding the long-term importance of this initiative.
- I have de-prioritized
hermetic_cc_toolchain’s MacOS target support.
With employment out of the way, what is waiting for me past June 30?
Project 1: City Limits
Hereby is my definition of “living in a city” for the purpose of this project:
If there is a coffee shop within 15 minute walk from a location, then the location is indeed a town/city location. Locations outside a 15-minute walk are “not a city”: suburbia, farmstead, homestead, whatever you want to call it.
Given the above definition of a city, I want to draw the a map of Vilnius City Boundaries. I have not found the suitable algorithm yet: there are many algorithms to calculate the duration from point A to B, but not an algorithm which will draw the boundaries from point A (the coffee shop) to all reachable points under a certain cost.
Of course, this definition is a joke. Not all of us live for coffee. I have a few more applications for extending such a map, but the coffee is the first one.
Project 2: my take on universal headers
Caution: this section is highly technical and probably interesting only to folks who compile lots C or C++ applications.
Zig universal-headers project was started about 2 years ago by now, but still quite far from completion. This project is important for me, because I want to easily compile my software with different versions of glibc using only the command-line switch. Zig already offers that for the symbols exposed by glibc, but not for the headers. Currently zig offers headers for only latest glibc versions, which is problematic.
My take on universal-headers:
- Compress all headers with
zstd --ultra -22
- Make the compressed tarball seekable, so it can be extracted faster.
- When user requests a specific glibc version, extract the headers for that particular version only and point the compiler to that directory.
ziglang@universal-headers/headers, when compressed
naïvely, don’t weigh that much:
$ ls --block-size=M -1s headers.tar headers.tar.zst 1121M headers.tar 17M headers.tar.zst
Granted, they are incomplete (looks like only glibc 2.33-2.36 are present, whereas we want at least 2.17), but a reasonable start.
Project 3: home and vacation
Quite some things have accumulated to improve and fix at home. That will get some love and attention too.
Looking forward to all of the above!