Conversation
Notices
-
tsoifan1997 (sysrq@lab.nyanide.com)'s status on Tuesday, 03-Oct-2023 06:48:53 JST tsoifan1997 @iska @MK2boogaloo @Zerglingman @p
I fail to see an issue with pipes- Machismo likes this.
- Machismo repeated this.
-
Machismo (zerglingman@freespeechextremist.com)'s status on Tuesday, 03-Oct-2023 06:49:07 JST Machismo @sysrq @MK2boogaloo @iska @p pipe into read -
Iska (iska@catposter.club)'s status on Tuesday, 03-Oct-2023 06:50:18 JST Iska @sysrq@lab.nyanide.com @MK2boogaloo@lab.nyanide.com @Zerglingman@freespeechextremist.com @p@freespeechextremist.com pipes copy things from one program to be re-parsed by another when we could just be lazily sharing pointers
Machismo likes this.Machismo repeated this. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Tuesday, 03-Oct-2023 13:26:55 JST pistolero :thispersondoesnotexist: @sysrq @MK2boogaloo @Zerglingman @iska
> I fail to see an issue with pipes
Some Lisp fans are still reeling from the generational trauma of Unix being a better operating system.Machismo repeated this. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Tuesday, 03-Oct-2023 13:27:09 JST pistolero :thispersondoesnotexist: @iska @Zerglingman @sysrq @MK2boogaloo
> lazily sharing pointers
You've got to calculate something before you can share a pointer to it.
Actual lazy evaluation is not possible with sharing pointers, only with a means of connecting producers, filters, and consumers. In Unix, this is done by pipes and sockets, in Haskell it's done by leaking memory, and in Common Lisp it is done by coping. -
tsoifan1997 (sysrq@lab.nyanide.com)'s status on Tuesday, 03-Oct-2023 13:27:18 JST tsoifan1997 @p @iska @Zerglingman @MK2boogaloo
I'm confused about it, a pipe is just a single system call and then the programs do their normal I/O, easily better than having an entire lisp interpreter with every needed command implemented within it.Machismo repeated this. -
tsoifan1997 (sysrq@lab.nyanide.com)'s status on Tuesday, 03-Oct-2023 13:27:21 JST tsoifan1997 @p @MK2boogaloo @Zerglingman @iska
Actually I don't even think a system call is necessary (I reread the man page)Machismo repeated this. -
tsoifan1997 (sysrq@lab.nyanide.com)'s status on Tuesday, 03-Oct-2023 13:27:23 JST tsoifan1997 @MK2boogaloo @Zerglingman @iska @p
Wait, I think I'm mistaken, aaaaaaaaaaaaaaaaaaaaaaaaaaaaAAaaaaaaAAaaaAaa -
Iska (iska@catposter.club)'s status on Tuesday, 03-Oct-2023 20:17:50 JST Iska @sysrq@lab.nyanide.com @MK2boogaloo@lab.nyanide.com @Zerglingman@freespeechextremist.com @p@freespeechextremist.com system callsharam :terryew:
Machismo likes this. -
Iska (iska@catposter.club)'s status on Tuesday, 03-Oct-2023 20:37:39 JST Iska @sysrq@lab.nyanide.com @p@freespeechextremist.com @Zerglingman@freespeechextremist.com @MK2boogaloo@lab.nyanide.com having an entire lisp interpreter with every needed command implemented within it.when did I say that
Machismo likes this. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Wednesday, 04-Oct-2023 07:45:51 JST pistolero :thispersondoesnotexist: @sysrq @MK2boogaloo @Zerglingman @iska The idea is that spawning a process is "too much overhead", and writing to a pipe is a memory copy, and that this is worth additional coupling and forcing things to be in a single language. It's a really top-down view. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Wednesday, 04-Oct-2023 07:47:01 JST pistolero :thispersondoesnotexist: @sysrq @MK2boogaloo @Zerglingman @iska Yeah. pipe(), read(), write(). Syscall overhead is real, but it's going to be negligible on any serious task, and on a non-serious task, it doesn't matter.
One way to back up a database live is `ssh -C $host pg_dump $dbname | pbzip2 > backup.sql.bz2`. So ssh uses deflate, which gets the data kind of bulky but fast compression (it's gzip/deflate) so the dump gets across the network quicker without loading the CPUs on the DB server, then locally you're running parallel bzip2 to do the actual compression before writing it to disk. That's something you can't do without a pipe: the remote system *can't* share a memory space with the local machine. A TCP connection is an ordered bytestream so this kind of thing is trivial. Trying to enforce some kind of typed stream puts more overhead on both sides and makes the general compression impossible: everything is bytestreams or has to be reduced to bytestreams for general tools like that to work, unless you can get the entire earth to agree on a wire format for objects. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Wednesday, 04-Oct-2023 09:39:17 JST pistolero :thispersondoesnotexist: @iska @Zerglingman @sysrq @MK2boogaloo
> when did I say that
Necessary consequence of suggesting that the shell be replaced with a Lisp REPL.Machismo likes this. -
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Wednesday, 04-Oct-2023 09:39:20 JST pistolero :thispersondoesnotexist: @iska @Zerglingman @sysrq @MK2boogaloo If your kernel doesn't implement a system call, then you don't get to write an interrupt handler for syscalls. Machismo likes this.