Okay, aside the sarcasm this is a genuine critic, cry for help or curiosity post. I am a beginner to zig, familiar to C family of languages and a recent interest to a custom VM implementation brought me to zig. I've been exploring it for a couple of days only so pardon for my limited insights.
Zig surely is opinionated as well as quite stubborn and in a wrong way many times. Unused variables and even function parameters are hard errors rather than warnings. Like why?
I like the idea of pure control and absolute performance but why do we need to explicitly pass allocators everytime? Why not have defaulted allocator parameters just in-case? Maybe at least for less critical API.
Giving only single errors at a time in this age paired with lackluster lsp (maybe cause the compiler itself gives just one error at a time and lsp depends on compiler diagnostics) makes using the language pretty hectic. Leave alone all other use cases, how is any change that cascades to be caught ergonomically?
There could be multiple errors and all you see is a single one so you fix that and run the compiler thinking it is done and surprise, it's another error and the same cycle of "fix -> compile -> error" continues. It's so stupid that it's funny, and salute to those who are developing and maintaining large projects like ghostty and tigerbeetle with such lackluster tools.
So it's quite a bit of friction going forward and I am really questioning whether to keep going with zig ( does it get better, or there are work-arounds or other tools that help minimize such painpoints?). What's others noticeably (good or bad) in Zig from your experience? Please provide your 2 cents.