Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(10 Sep 2020 16:29 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(10 Sep 2020 16:34 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Duy Nguyen
(10 Sep 2020 16:42 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Lassi Kortela
(10 Sep 2020 16:57 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Duy Nguyen
(10 Sep 2020 17:09 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Lassi Kortela
(10 Sep 2020 17:21 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Duy Nguyen
(10 Sep 2020 17:35 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(10 Sep 2020 17:37 UTC)
|
Re: Remove file descriptors completely from srfi-170? hga@xxxxxx (10 Sep 2020 17:36 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Duy Nguyen
(10 Sep 2020 17:51 UTC)
|
Re: Remove file descriptors completely from srfi-170?
John Cowan
(10 Sep 2020 18:11 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Duy Nguyen
(10 Sep 2020 18:49 UTC)
|
Re: Remove file descriptors completely from srfi-170?
John Cowan
(10 Sep 2020 18:52 UTC)
|
Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(10 Sep 2020 19:02 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Lassi Kortela
(10 Sep 2020 19:12 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(10 Sep 2020 19:08 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Lassi Kortela
(10 Sep 2020 19:16 UTC)
|
Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(10 Sep 2020 19:23 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(10 Sep 2020 19:28 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Shiro Kawai
(10 Sep 2020 19:58 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(10 Sep 2020 20:02 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Shiro Kawai
(10 Sep 2020 20:13 UTC)
|
Re: Remove file descriptors completely from srfi-170?
John Cowan
(10 Sep 2020 20:19 UTC)
|
Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(10 Sep 2020 20:49 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(11 Sep 2020 13:20 UTC)
|
Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(11 Sep 2020 14:04 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(11 Sep 2020 14:56 UTC)
|
Re: Remove file descriptors completely from srfi-170?
John Cowan
(11 Sep 2020 15:32 UTC)
|
Re: Remove file descriptors completely from srfi-170?
John Cowan
(10 Sep 2020 20:18 UTC)
|
Re: Remove file descriptors completely from srfi-170?
Marc Nieper-Wißkirchen
(11 Sep 2020 13:50 UTC)
|
R7RS scope & yearly editions
Lassi Kortela
(11 Sep 2020 14:10 UTC)
|
Re: R7RS scope & yearly editions
Marc Nieper-Wißkirchen
(11 Sep 2020 14:22 UTC)
|
Re: R7RS scope & yearly editions
Lassi Kortela
(11 Sep 2020 14:26 UTC)
|
Re: R7RS scope & yearly editions
hga@xxxxxx
(11 Sep 2020 14:31 UTC)
|
Re: R7RS scope & yearly editions
Marc Nieper-Wißkirchen
(11 Sep 2020 14:48 UTC)
|
Re: R7RS scope & yearly editions & language interop
Lassi Kortela
(11 Sep 2020 15:20 UTC)
|
Re: R7RS scope & yearly editions & language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 15:28 UTC)
|
Re: R7RS scope & yearly editions & language interop
John Cowan
(11 Sep 2020 17:11 UTC)
|
Language interop
Lassi Kortela
(11 Sep 2020 17:55 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 18:04 UTC)
|
Re: Language interop
Lassi Kortela
(11 Sep 2020 18:14 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 18:28 UTC)
|
Re: Language interop
hga@xxxxxx
(11 Sep 2020 18:51 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 20:29 UTC)
|
Re: Language interop
hga@xxxxxx
(11 Sep 2020 21:00 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(12 Sep 2020 07:26 UTC)
|
Re: Language interop
Lassi Kortela
(11 Sep 2020 19:18 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 20:38 UTC)
|
Re: Language interop
John Cowan
(11 Sep 2020 20:51 UTC)
|
Re: Language interop
hga@xxxxxx
(11 Sep 2020 18:30 UTC)
|
Re: Language interop
John Cowan
(11 Sep 2020 19:46 UTC)
|
Re: Language interop
Marc Nieper-Wißkirchen
(11 Sep 2020 20:15 UTC)
|
Re: Language interop
John Cowan
(11 Sep 2020 19:42 UTC)
|
Re: R7RS scope & yearly editions
hga@xxxxxx
(11 Sep 2020 15:35 UTC)
|
Re: R7RS scope & yearly editions
Marc Nieper-Wißkirchen
(11 Sep 2020 15:56 UTC)
|
Re: R7RS scope & yearly editions & syntax debates are so 1980
Lassi Kortela
(11 Sep 2020 16:36 UTC)
|
Re: R7RS scope & yearly editions & syntax debates are so 1980
John Cowan
(11 Sep 2020 17:02 UTC)
|
Interlisp and structural code editing
Lassi Kortela
(11 Sep 2020 17:45 UTC)
|
Re: Interlisp and structural code editing
John Cowan
(11 Sep 2020 20:16 UTC)
|
Re: R7RS scope & yearly editions
John Cowan
(11 Sep 2020 16:57 UTC)
|
Re: R7RS scope & yearly editions
Marc Nieper-Wißkirchen
(11 Sep 2020 17:23 UTC)
|
Re: R7RS scope & yearly editions
John Cowan
(11 Sep 2020 20:31 UTC)
|
Re: R7RS scope & yearly editions
Arthur A. Gleckler
(12 Sep 2020 17:39 UTC)
|
Re: R7RS scope & yearly editions
John Cowan
(11 Sep 2020 16:39 UTC)
|
Re: R7RS scope & yearly editions
Marc Nieper-Wißkirchen
(11 Sep 2020 17:01 UTC)
|
Re: R7RS scope & yearly editions
Lassi Kortela
(11 Sep 2020 17:15 UTC)
|
Re: Remove file descriptors completely from srfi-170?
hga@xxxxxx
(10 Sep 2020 18:40 UTC)
|
> From: Duy Nguyen <xxxxxx@gmail.com> > Date: Thursday, September 10, 2020 11:42 AM > > On Thu, Sep 10, 2020 at 11:29 PM <xxxxxx@ancell-ent.com> wrote: >> >>> From: Duy Nguyen <xxxxxx@gmail.com> >>> Date: Thursday, September 10, 2020 10:48 AM >>> >>> Besides the procedures to "create" and close file descriptors, they >>> are only needed to make a port. Why not combine open-file and >>> fd->*port in one? All other procedures either take pathname or a port. >> >> Because we want to allow users to be able to write C code to do other >> things to file descriptors we haven't anticipated? Of course, per >> the below I should come up with some concrete examples, but that's >> already happened with the change to terminal? you inspired. > > If you can write C code, you can already call open() or close() > yourself. Indeed, but you need something somewhere so that you can eventually turn it into a port. Like the posited new SRFI. > This is what I meant by FFI in response to Lassi. This is a portable > SRFI, why do we cater to FFI which is very likely implementation > specific and has to deal with implementation quirks anyway? A compelling argument. With the exception of file-info, and set-file-mode, umask, and set-umask! which all take a magic integers (which I bet a lot of us have wired into our minds) there's nothing that gets you into the guts of POSIX except for these fd procedures. >>> but we could wait until then to introduce necessary procedures to >>> either extract/dup fd from a port, or open an fd without going >>> through ports. Adding back later is easier than removing or changing >>> existing behavior. >>> >>> That removes port-internal-fd, which looks like a hack to me. And also >>> remove (for now) the risk of accidentally closing an fd that belongs >>> to some port. >> >> While I won't disagree that it looks like a hack, before making such >> a big change to the API I'd like something stronger, e.g. some concrete >> examples, than your I grant legitimate intuition (we're all experienced >> enough the "my initiation says" argument is good for red flagging etc.) > > To me it's actually lack of real fd usage (and as I said, I don't > consider fd obtained from a specific implementation). So if we can > obtain fd from one of the existing SRFIs, or from r7rs, then we need > procedures to work with them. Except for terminal?, which doesn't axiomatically belong in SRFI 170, is in fact the sole survivor from that section of scsh, raw fds are indeed not needed, and terminal? can be moved to one of several other future SRFIs. > Otherwise, I did not say we will not need fds. We may. But perhaps > we could find a way to introduce POSIX interfaces without fds. For > the terminal srfi, we could very well make it a port. For "my" parts of SRFI 205: POSIX Terminal Fundamentals, all the current procedures already take port arguments, but they all require port-internal-fd. Not sure about the scsh functions that per John don't belong anywhere else that have been tentatively added to it. > [ Process management, which I'll be staying out of. ] > >> I'll repeat the strongest argument I know for the fd->*port functions: >> they aren't really "POSIX", rather they get into the guts of a Scheme >> implementation's port implementation, which I gather tends to be >> complicated. *IF* you can turn an arbitrary fd into a port, with the >> various buffering options, you can do a whole lot stuff we haven't >> explicitly anticipated. For the reverse, see how port-internal-fd >> simplified the implementation of terminal? > > How is it more complicated or unexpected than calling (fd->*port > (open-file ..) ..)? Point. As well as (terminal? (port-internal-fd *port*)). >> Ah, here's my firm "NO!" to your request, unless all these procedures >> are moved from the SRFI, as we for example did with everything having >> to do with other processes: what you suggest requires all the hard >> work of integrating the SRFI with the Scheme implementation's port >> implementation, while hiding the resulting file descriptor needed by >> so many POSIX APIs and future SRFIs. That work would have to be >> copied under the hood for the latter. > > I don't see how it has to be copied. Doesn't code reuse exist? Of course; but it would be through the "+11" per Marc moving of this SRFI 170 functionality into another SRFI (I hope I don't get a reputation for chopping up SRFIs into smaller and smaller bits... :-). > And please note that we could introduce fd-based API _then_, when we > see the need. I'm not saying file descriptors can never enter Scheme > world. As I mention in an email sent after you made this reply, we also have truncate-file and file-info which need to convert from a port to a file-descriptor. But ... though it would be even more of a hack to leave just post-internal-fd exposed in SRFI 170, it is as mentioned by far the simplest thing you can do with a Scheme implementation's port implementation. And like Chibi Scheme, I'd expect it already cleanly exists in a lot of Scheme implementations (my SRFI 170's port-terminal-fd just does a port? sanity check on top of Chibi's "port-fileno" primitive). To restate, what I'm positing is: Move all of 3.1 I/O but port-terminal-fd into a new SRFI, which will be immediately worked on after SRFI 170's finalization. Move terminal? to a different SRFI, probably 205, which is also scheduled for immediate resumption of work after the finalization of SRFI 170 (and resolution of 198). As mentioned above, keep the now fully admitted hack of port-terminal-fd in SRFI 170, because it's easy/trivial, is needed by 170 and we don't want to indefinitely further delay 170's finalization. - Harold