<story><title>Mezzano – An operating system written in Common Lisp</title><url>https://github.com/froggey/Mezzano</url></story><parent_chain><item><author>spaceheeder</author><text>One of my favorite things to learn when I come across any experimental OS is: &amp;quot;why?&amp;quot; Redox wants to do microkernel architecture The Right Way, and wants to use a guaranteed memory-and-type safe language (Rust). ReactOS wants to create a drop-in replacement for Windows that not only supports older Windows programs, but also Windows-compatible device drivers. MenuetOS wants to build something approximating the OS experience most users are used to, but on bare metal in assembly.&lt;p&gt;So: why Mezzano?</text></item></parent_chain><comment><author>informatimago</author><text>Basically, the point of lisp OSes, is that they allow you to seamlessly write code at all layers, from down into the darkest bowels of the system, thru and up to the highest level application scripting, all in a single integrated language and libraries and frameworks.&lt;p&gt;You don&amp;#x27;t have to reboot a machine just because you make a patch to the kernel, and at the same time, you can patch the system using the same high level development tools as you would use to develop an application.&lt;p&gt;The thing is that there&amp;#x27;s what we call an impedence mismatch between a unix kernel and applications running on it, in that the data types processed by applications which are of higher level, don&amp;#x27;t match the data types processed by the unix kernels.  For example, a Ruby Integer is actually a bignum, and you cannot pass a bignum to the unix kernel: you have to provide a bit field with 32-bit or 64-bit.  This is work, and this is pain.  It is already pain when you write your applications in C or C++ where assumedly you already have bit field types, because your application could be compiled to run on kernels and processors using different word width!  Imagine the pain it is when you write your applications in Common Lisp with very high level data types (ratios, closures, pathnames!), and when you have to map those data objects onto the lame bits accepted by unix syscalls.  Consider all the literature written about logging, the byte vector logging provided by unix syslog vs. high level object logging provided by higher level libraries or other systems.&lt;p&gt;And of course, this is not limited to the interface between applications and systems, but goes beyond to the interface between applications.  When the system provides a pipe abstraction where all you can pass between applications are streams of byte, this leads to a lot of suffering.  You have to serialize and deserialize your data, you have to consider formats (a java float doesn&amp;#x27;t have the same syntax as a Common Lisp float!), encoding (utf-8? iso-8859-1, -15?).  Have you ever been advised to never parse the output of &amp;#x2F;bin&amp;#x2F;ls?  For good reasons!&lt;p&gt;Instead, if your system is written in Lisp, then you can directly pass lisp objects from one lisp application to another lisp application, and there&amp;#x27;s no need to serialize&amp;#x2F;deserialize, to parse or otherwise mangle the data: you just have lisp objects and you can use them directly.  You can pass closures (which enclose the lisp object data along with the lisp functions needed to process them).</text></comment>
<story><title>Mezzano – An operating system written in Common Lisp</title><url>https://github.com/froggey/Mezzano</url></story><parent_chain><item><author>spaceheeder</author><text>One of my favorite things to learn when I come across any experimental OS is: &amp;quot;why?&amp;quot; Redox wants to do microkernel architecture The Right Way, and wants to use a guaranteed memory-and-type safe language (Rust). ReactOS wants to create a drop-in replacement for Windows that not only supports older Windows programs, but also Windows-compatible device drivers. MenuetOS wants to build something approximating the OS experience most users are used to, but on bare metal in assembly.&lt;p&gt;So: why Mezzano?</text></item></parent_chain><comment><author>lispm</author><text>Mezzano would be an OS on top of a language&amp;#x2F;runtime for a programming language which allows flexible development from low-level up to high-level (CLOS&amp;#x2F;MOP). One could experiment with different OS models, which would be integrating interactive programming.&lt;p&gt;I grew up with a machine which booted into a BASIC interpreter. It was relatively primitive, but fun. How would it look &amp;amp; feel with a more powerful programming language?&lt;p&gt;This may all have its limits, but it looks like an interesting experiment. At some point in time it might even useful...</text></comment>