The biggest problem I see with this SRFI, to the point of crippling its adoption, is that it's so huge. So here are some suggestions about how to significantly decrease its size:
The removal of read-symlink eliminates the ability to round trip them, which makes all symlink awareness superfluous, including the option to not chase. This also helps with the reported 3 kinds of not quite as good symlinks Windows has.
These are even less justifiable than read-symlink per the 80/20 rule: user-login-name, file-info-regular?, file-info-block-special?, file-info-character-special?
file-info-socket? and system-name belong to a networking SRFI. current-timezone and current-locale make no sense just by themselves.
Every function that takes a filename and also a port and/or file descriptor should be scrutinized for dropping port and/or file descriptor under the 80/20 rule, and I think all of 3.6 User and group database access also fails that test.
The SRFI should be divided into a base, and break out into another SRFI everything pertaining to separate processes. At first glance I think that would move:
In 3.2 I/O, dup->fdes
In 3.3 File system, create-fifo
All of 3.4 Processes.
In 3.5 Process state, pid, parent-pid, process-group, set-process-group, and set-priority, and nice removes the process-object/pid argument, only affects the calling process. Not sure about the myriad get and set uid/gid; as I understand it, some are only relevant in the context of exec, but don't some set-uid or -gid program want to lower their privileges after starting?
All of 3.9 Signal system, which are signal-process and signal-process-group.
In 3.12 Terminal device control, I think open-control-tty, become-session-leader, tty-process-group, and set-tty-process-group.
- Harold