Comment by bb88

1 year ago

> (If they did, the unwinding would close the file handle and the other coroutine might then return to that stack frame, only to find the file handle already closed.)

The programming language is not supposed to keep state of OS level resources. You are. The gray beard in me would just say "Duh".

To my knowledge, python/C/C++/Java/Go doesn't do this automatically. You're responsible for that.

Why not?

  • I presume you're the one who downvoted my comment.

    C++ leaves OS level resource handling to the user. It's not C++'s job to figure out if the user wanted to close this unused resource. It's the programmer's job to not leak resources. And that includes closing each file descriptor once, or deleting allocated memory exactly once.

    Go came with a GC model. Yay! But file descriptors aren't pointers to memory. They're representations of physical objects on disk.

    Again, it's the programmer's job to tell the compiler when they're done with the file, and not rely on the compiler to figure out when they're actually done with it.

    Could go reference count file descriptors/handlers? Yes! But they also chose not to.

    • Is this right? Don't languages clean up resources in finalizers? (It's just often not ideal because finalizer calling is not predictable... Or really that they are by default called by memory pressure and not resource pressure).

      4 replies →