The more I use Lisp, the more I understand the Unix philosophy as something not for daily use, but as something to be lying on top seamlessly, as #RMS wanted, and later with #GNU Hurd. Kinda like daemons and libraries doing the hard work in the background, silently; while you would using a Lisp interface for daily usage and Lisp having bindings (not wrapper for Unix commands, but API) to everything. It would be interesting if the #Lem editor got something similar to the #eshell for #Emacs.
@xameer@ramin_hal9001 I acknowledge that Lisp Machines and Emacs needed beefy resources, but Emacs in the 90's shined, lots of people preferred it against Vi.
Emacs, Texinfo, Maxima and LaTeX modes... had little to do with Unix and more with ITS, which was the environment RMS tried to mimic on top of a free Unix. If Emacs had the same support as GCC and Linux, you could be using a proper async Emacs today with Elisp bindings to FFMPEG, ImgMagick, 3D software such as kons-9 for CL...
@ramin_hal9001@anthk nonetheless here s 2c I liked The unix philosophy is quite the contrary, to keep the KERNEL simple, and deport to user space the handing of complexities that they don't want inside the kernel. (See for example interrupted system calls and signal handling, but that's another topic).
The reason why the line discipline is inside the kernel, is to avoid context switches at the reception of each character (which in the early times of small core memories, would imply swap-outs and swap-ins!). So the line discipline keeps in a kernel buffer a line of input, and since it's simple enough to test for a specific byte and decrement a counter to implement the backspace "editing" (and a few other simple editing functions), it's done there.
The alternative, is to use the raw mode, where the characters are forwarded to the application as soon as they're received, which is needed for more sophisticated editors, like the (at the time) famously known Eight Megabytes And Constantly Swapping editor (emacs) https://www.linusakesson.net/programming/tty/
You can block JS with a little switch at the settings.
It needs SBCL to run/build. The most recent SBCL needs to be compiled with either the older SBCL release itself, ECL or GNU CLISP. The more recent SBCL release, the better.