I discussed this with @eregon and I think the goal here is to try and figure out a way these interfaces can be a bit less confusing. ## 1. 1/ I don't understand this behaviour: ```ruby STDOUT.close STDOUT.puts "Hello World" # => closed stream ``` vs ```ruby IO.for_fd(STDOUT.fileno, autoclose: true).close STDOUT.puts "Hello World" # => Hello World ``` ## 2. 2/ `IO.for_fd(..., autoclose: true/false)` The documentation for `autoclose` is: > If the value is false, the fd will be kept open after this IO instance gets finalized. But it also seems to affect `#close` - i.e. calling close does not close underlying file descriptor. Should we fix the documentation or is the implementation wrong?