I feel like this "missing middle" is common to a lot of language communities these days. Devs writing for themselves are often happy to make cool TUIs, and devs writing for "end users" are often writing webapps.
If you know Typescript and have a component framework you like it's about the same level to write a TUI in Charm as it is to write something in Wails. I kind of alternate between them.
For people with super-custom kernels, static builds might use a custom syscall thinking its a syscall for a newer kernel. Further, it might not support their kernel version (libc-to-syscall mismatch).
Then there's the fact that I might have compiled libraries with certain options that a static compilation won't get, ever (such as native CPU instructions or other optimizations).
Even worse, static builds mostly use musl as the libc implementation, for which there are many issues (DNS issues, the fact that most openssl library tests don't pass and are disabled). I wouldn't trust musl/alpine/et al in production for "serious" things.
Static builds are __convenient__, but they shouldn't be the default.
I love the fact that you can just update one single openssl lib and all installed apps use the updated version after a restart.
Static builds have their legitimate use-cases so maybe change that to "mandatory static builds". (iirc go support for dynamic linking is worked on and will become stable eventually)
More than "not bad", Textual is probably best in class for TUIs atm, but I wish Python had static builds! Even Javascript can build executables now with Bun!
JS executables with deno or bun aren’t terribly different from pyinstaller executables. Of course they’ve been made more convenient by being bundled with the toolchains.
I’ve used it twice, both times regretted and rewrote in Wails (that is, back to a web view for UI). Problems not limited to:
- (Last I checked, which is <1yr ago) Text rendering is fundamentally done wrong, it can’t access any system font, can only use the built-in font, or exactly one custom font you bundle. Good luck supporting any user-generated or web content from people who don’t use the Latin script.
- Very limited selection of widgets, a problem common to all but a few native frameworks.
- Very limited styling options for the small selection of widgets.
- Looks terrible. Okay for personal/internal stuff, definitely don’t want to ship to end users. (Obviously subjective.)