@abcdw My personal preference: (ice-9 binary-ports) if you’re writing Guile-only code, or (rnrs io ports) if you’re aiming for R6 portability. These interfaces are roughly synonyms; the R6 one just pulls in more stuff.
(I’m skeptical of R7, I think it didn’t start on the right foot.)