Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> But why does that matter? Help me understand.

It doesn't really.

ZMacs and the Listener on the Lisp Machine is just as single threaded as GNU Emacs. One ZMacs frame cannot run the above code without locking up, one Listener instance cannot run the above code without locking up, if you open a file in ZMacs it will lock up while reading up the file.

The only difference is that when the ZMacs background process is working, you can still talk to the Lisp Machine in other ways.

The closest you might get with GNU Emacs is running multiple versions, one for each "program" (Emacs, mail, web browser, ...) -- still not exactly the same thing since you can't easily poke into the mail program from another instance.

At the end of the day .. none of this matters much, as we can evidently see since nobody has really tried to fix this.



I think Emacs' process model is generic enough that it could adopt a better method of concurrency in the future. Functions for processes are run based on 'sentinels' which fire on interrupts from foreign processes. It's a simple model which works fine, and I would greatly prefer it to be augmented with a more clever scheduler than to dragging mutexes and condition variables into the system.

> At the end of the day .. none of this matters much, as we can evidently see since nobody has really tried to fix this.

Something that's easy to take for granted is how fast Emacs actually is. Anyone who's taken the time to try out an emulated Lisp machine will quickly observe how slow and clunky it actually is most of the time. And it's worth mentioning that a lot of the crucial components of the Lisp machine system, such as the windowing system, the garbage collector and the network stack work because they are written in a more structured and low-level manner so that they run efficiently and avoid consing. It is all Lisp, sure; but there's a bit of a bias that seems to portray that its all 'plain lisp' that 'just works' concurrently because it's magic.


The VLM I'm using has the CPU emulated in assembler. Runs okay on Apple Silicon. It uses one core.

> And it's worth mentioning that a lot of the crucial components of the Lisp machine system, such as the windowing system, the garbage collector and the network stack work because they are written in a more structured and low-level manner so that they run efficiently and avoid consing.

Not all levels are low-level, there is a large higher level which is written using Flavors. Even transmitting IP packets is a Flavor method.


On my Symbolics VLM installation (on a MacBook Pro) I can run things in one Listener, let it running its code and switch to the next listener. I can also use the GUI to create a new Listener. I can switch back to the busy Listener and force it into a break by control-suspend. I can also reshape a busy Listener window.

Something like the LispWorks IDE, with its editor-based listener tool, does the same.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: