Note: this article is part of the "Building a graphical multi-user spreadsheet editor in Zig" series. Read all the articles here:
It's been a while since my last project (edit, a text editor in C). I've had many other project ideas since then, but I haven't taken the time to bring them to life. Now I have some free time over the next two months, and I'm willing to use some of it for a nice software project: grid, a spreadsheet editor!
This blog entry is (hopefully!) the first of a series documenting my progress. There are two reasons to do that.
First, I expect to explore many new topics during the project, wether it is Zig features, computer science concepts, data structures, or algorithms. Writing about my findings will allow me to clarify my understanding, and you might find them interesting as well.
Second, it might drive my motivation to carry on the project, as I will want to wrap this series up nicely.
Unlike my text editor, I very seldom use spreadsheet editors. I think it's a key point in the project: I'm not designing and building grid for my personal use, frustrated with existing tools, but for the learning experience. Thus, what do I expect to learn?
Quite an ambitious roadmap!
I've never used Zig. However, I figured it might be a good fit for this project.
First, Zig is advertised as a simple language, something I like and need for performance. Its great C-interoperability should allow me to use the unmodified raylib source code (in C), and to get back to C for some parts.
In addition, its cross-compilation abilities enable targeting several client types: native (any platform) or website (with WebAssembly). As I develop on WSL Linux but can only run graphical applications on Windows, cross compilation is especially precious.
Finally, I'm curious of Zig modern (compared to C) and innovative features: payload capture, tests, struct methods, optionals, defer, error management...
My goals for grid are:
And aside from the final product: