Vlang GUI
By Sean E. Russell on on Permalink.
I recently wrote about developing mobile applications in Go, specifically focusing on the GUI options, their features and performance. I used a trivial little shopping list program I wrote called Aĉetumi as a test case; I wrote it because their wasn’t already a mobile-friendly, simple check-list shopping list backed by a simple text file (i.e., not a database), and because the one that I’d been using didn’t allow editing (e.g. correcting typos) items already added. In any case, Aĉetumi is really simple, which made it ideal for re-implementing the GUI in different toolkits. I was able to test 3 GUI libraries, and could have done a fourth if I didn’t already know I didn’t like the platform. There was one other option I was interested in, and that was writing the app in V.
I really like V. I think it succeeds in addressing a lot of issues Go has, and it both usually exceeds Go’s compile times and can be more terse. I have to do a major context switch when I change programming languages – my brain isn’t as agile as it once was – and while I don’t really notice how much better V feels to program when I’m going from Go to V, I really notice it when I’m going the other direction. V has everything G does, and some additional features I miss quite a lot when I switch back to Go. One of these days I’ll do a proper write-up about it. The short version of why I haven’t switched entirely to V yet is two key reasons: first, V still lacks the depth of libraries Go does, which means if I want to hack out something quick it often requires building one or two supporting libraries first. Second is that V still lacks a high-level TUI library, and most of my desktop tools are either straight flag-driven CLIs (no problem) or TUI programs. V’s TUI library is very low-level, lacking even basic layout management or widgets – it’s essentially a 2D drawing library. I’m not interested in developing such a library myself. Yet. So I’m stuck with Go.
V does have a couple of high-level cross-platform GUI libraries. gui is one of the libraries developed by the core project itself, although not part of the core library. iui is a third-party project.