@rml @akater
Yes, I also recommend you try Guix OS, and it's "Shepherd" init system. But it definitely takes time to learn how to use it if you have never used Nix or Guix before.
> Lisp offers “Freedom 1” (“the freedom to study how the program works, and change it”) in its fullest.
I would say this is a feature of Emacs, and Emacs Lisp, but not Lisp in general. It is possible to write a fully proprietary system in Chez Scheme or a Common Lisp such as SBCL, even though the compilers are open source. And there are fully closed-source proprietary Common Lisp compilers such as Allegro Common Lisp.I think when you say Lisp gives you "the freedom to study how the program works, and change it," you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution. The stack trace shows you every part of the program, and you can modify any part of the program in memory as it runs. You can also dump the entire program and it's state to an "image" file and load it up later.
By the way, you might be interested to learn that languages like Erlang and Prolog can do this too. Erlang rather famously provides a micro-threading feature with asynchronous message passing built-in, which encourages you to structure your program as countless communicating microthreads. Not only that, but you can actually freeze any one single thread and fix a bug in it's code (as you would in Lisp) while the all the other threads in the system keeps running. It is used in telecommunication, and has a reputation for creating programs that never need to be halted (100% uptime) since you can fix bugs on live systems without shutting them down.
> you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution
Image-based, yes. Condition system has nothing to do with this. Functions can be recompiled without dealing with it.
Erlang is famous, yes. One active member of our local Emacs community uses Elixir and seems to enjoy it, and claims they even use macros fairly often. Maybe it would be possible and beneficial to have such concurrency in a Common Lisp implementation (or in Emacs) but I have enough life goals already. 🙂
> you might be referring to Lisp's "image based programming" model. This is where Lisp basically freezes itself when an exception is thrown, then you can make changes to the code and resume execution