Personally I’d say anytype, I don’t like how opaque it is, at the very least the proposal with the |T| syntax would make it more readable because T could be named and therefore solve my biggest issue with anytype which is that on top of sometimes breaking zls, it also is very jarring and always requires to jump to definition, which breaks the flow. But i have to say now it’s much better since the WriterGate and the new Io interface, but with the previous writer/reader it was unreadable.
I’d like to remove the C type too, I don’t think they provide anything, especially [*c] I’m pretty use one of the many topics have made have been about this one and me not understanding it, because of how it coerce and what it express, and I don’t like it.
I also don’t like the implicit coercion of usize/isize I think it makes it exactly like C with the difference that at least the Zig compiler doesn’t silently coerce my size_t to whatever I’m assigning it to.
I’m not against the removal of ! at the same time I wonder if this could be solved better by basically a kind of fmt step, where zig can do something similar to the macro expansion and simply expand all your errors into custom error set for each function, but saying it out loud I’m not sure this is really useful.
Overall I’m pretty satisfied with current error handling, what would make it bearable is if at least the zig compiler was able to infer when an error has been handled and therefore doesn’t need to reapear in the function signature that handled it, at the same time I’d be worry because on one hand people being “lazy” with error handling means that you as the user often get the opportunity to choose directly how to handle the error from library code, which in my opinion is better than the library swallowing it for you.
I’d like to remove every single manage container, I think it encourage to think about things more.
I’d love zig to remove std.debug.assert, I think it would gain much more power as a builtin, and could tie very nicely into the build server protocol, because external tools could use those assertion builtin as a way to make static analysis better, (although this is probably possible by just seeing the undefined at the end but still).
Having said that I love the language, I think the team behind it is doing a rock solid job, and I’ll let them cook.