well neither does C or zig right? but zig and odin do offer defer, which should be good enough while maintaining simplicity right?
You can structure your code to not need cleanup in every function.
The biggest problem with destructors is, how do you handle errors? close() can fail you know?