Live data from Hacker News

An immutable operating system

augustl.com

121–130 of 153 posts

Re: An immutable operating system

#121

I haven't written any Clojure, but I have written a good bit of Erlang. My understanding of the Erlang Virtual Machine tells me that it solves a lot of the problems you describe regarding immutable data. For example, per-process garbage collection due to immutability, message passing via copying data, etc. I think you would be well-served to experiment with and learn some Erlang to help inform your design. In fact, E…

I'm an Erlang noob, but afail the model is pretty different. I'm imagining a shared-everything system, where immutable values are freely passed around with no copying. Erlang is more of a shared-nothing system. Also, Erlang requires multiple machines to shine, but an OS is more about managing one machine. I do think message passing have a bright future, though, and my OS will not work at all in a shared-nothing manyc…

I see. You are correct, Erlang definitely falls on the shared-nothing side if you ignore some uses of ETS and ref-counted binaries (binaries above 64 bytes, I believe).

I disagree with the statement "Erlang requires multiple machines to shine," but my motivations, and my definition of "shine," are likely different from yours. Erlang only requires >1 machines if you are creating a system with proper fault-tolerance. In my opinion, it has good SMP support and it performs well for general-purpose applications. You wouldn't use it to implement matrix multiplication, though :)

Anyway, the gist of my post is that the lessons learned from writing Erlang programs might be useful in your work.

Good luck! I look forward to hearing about your progress.

Re: An immutable operating system

#122

Awesome! You should have a look at Urbit: http://www.urbit.org/

There appears to be no "About" on that site. Who knows what on earth it is? On the left sidebar, the "documentation" link is to a video. No thanks, I'm look for a sentence of text. The next link down is a 404 error. The community link is for insiders...lots of comments about people leaving the building,whatever that means. Bottom of page, how to install. Why am I installing something when I don't know what it is? Sit…

Sorry our site sucks. We released accidentally and are more or less in "semi-stealth mode." You probably shouldn't be interested yet. Unless you like playing with semi-broken stuff. When it's not broken we'll let you know.

Urbit is indeed a purely functional OS, not super dissimilar to the OP's project. And it works at least well enough to run a chat server on its own network (which generated all those logs with "leaves the building"). But we ship no code before its time and we probably shouldn't even have a site up.

You'll enjoy the video though - it has good music, at least.

Re: An immutable operating system

#123
post #122

Earlier quoted context omitted.

There appears to be no "About" on that site. Who knows what on earth it is? On the left sidebar, the "documentation" link is to a video. No thanks, I'm look for a sentence of text. The next link down is a 404 error. The community link is for insiders...lots of comments about people leaving the building,whatever that means. Bottom of page, how to install. Why am I installing something when I don't know what it is? Sit…

Sorry our site sucks. We released accidentally and are more or less in "semi-stealth mode." You probably shouldn't be interested yet. Unless you like playing with semi-broken stuff. When it's not broken we'll let you know. Urbit is indeed a purely functional OS, not super dissimilar to the OP's project. And it works at least well enough to run a chat server on its own network (which generated all those logs with "lea…

That's fine -- but please add an "About" link that says what "urbit" is.

That lack of explanation, that expectation of speaking to insiders, is unfortunately very common on web sites, not just yours.

Please add the About explanation even if you decide to take the site offline. At least that way, it will already be ready, later, when the project is further along.

I was just reading about the defunct House functional OS yesterday, coincidentally, so I'm interested in the general topic.

Re: An immutable operating system

#124
post #122

Earlier quoted context omitted.

Sorry our site sucks. We released accidentally and are more or less in "semi-stealth mode." You probably shouldn't be interested yet. Unless you like playing with semi-broken stuff. When it's not broken we'll let you know. Urbit is indeed a purely functional OS, not super dissimilar to the OP's project. And it works at least well enough to run a chat server on its own network (which generated all those logs with "lea…

That's fine -- but please add an "About" link that says what "urbit" is. That lack of explanation, that expectation of speaking to insiders, is unfortunately very common on web sites, not just yours. Please add the About explanation even if you decide to take the site offline. At least that way, it will already be ready, later, when the project is further along. I was just reading about the defunct House functional O…

Thanks again for the advice.

Do you have a link to House? I wish people naming projects would realize that the Internet is dead and all we have is the Googlenet...

Re: An immutable operating system

#125
post #124

Earlier quoted context omitted.

That's fine -- but please add an "About" link that says what "urbit" is. That lack of explanation, that expectation of speaking to insiders, is unfortunately very common on web sites, not just yours. Please add the About explanation even if you decide to take the site offline. At least that way, it will already be ready, later, when the project is further along. I was just reading about the defunct House functional O…

Thanks again for the advice. Do you have a link to House? I wish people naming projects would realize that the Internet is dead and all we have is the Googlenet...

I totally agree, it's sad when interesting links die, and it's sad when a search term is extremely generic.

Here's what I've got, pasted out of my notes:

House has been successfully implemented in Haskell, I'd assume that Haskell would fit your criteria. Admittedly, House is an experimental OS, rather than production one. But they have managed to implement everything from kernel though network stack, to a rudimentary GUI. [link broken, see search results below] 2005 http://lambda-the-ultimate.org/node/943

House is a demo of software written in Haskell, running in a standalone environment. It is a system than can serve as a platform for exploring various ideas relating to low-level and system-level programming in a high-level functional language. More details are available in our ICFP 2005 paper: A Principled Approach to Operating System Construction in Haskell. http://ogi.altocumulus.org/~hallgren/ICFP2005/ http://programatica.cs.pdx.edu/House/

terse wikipedia article on House http://en.wikipedia.org/wiki/House_(operating_system)

short LTU thread on functional systems programming http://lambda-the-ultimate.org/node/943

...oh, also there's a book, "Unix System Programming with Standard ML" by Anthony L. Shipman 2001

Was free online, link is broken, available via archive.org:

http://web.archive.org/web/20040531113417/web.access.net.au/... http://web.archive.org/web/20040531113417/web.access.net.au/...

I just found that, have not read it.

Re: An immutable operating system

#126
post #124

Earlier quoted context omitted.

Thanks again for the advice. Do you have a link to House? I wish people naming projects would realize that the Internet is dead and all we have is the Googlenet...

I totally agree, it's sad when interesting links die, and it's sad when a search term is extremely generic. Here's what I've got, pasted out of my notes: House has been successfully implemented in Haskell, I'd assume that Haskell would fit your criteria. Admittedly, House is an experimental OS, rather than production one. But they have managed to implement everything from kernel though network stack, to a rudimentary…

House is an OS in a very different sense than Urbit - the "boots on bare metal" sense. The core of House is a monad which represents the hardware state of a common Intel box.

Urbit is intended to run virtually in the cloud and is an OS only in the sense of "stores your data and runs arbitrary programs". As a cloud computer its "function" is simply (old state, packet in) -> (new state, packets out). For communicating with the host OS this generalizes to "event in" and "actions out." Eg, I got an HTTP connection so I send an HTTP response. So not only isn't it done, it isn't even very smart... but it is a function and it is an OS.

Re: An immutable operating system

#127

Awesome! You should have a look at Urbit: http://www.urbit.org/

There appears to be no "About" on that site. Who knows what on earth it is? On the left sidebar, the "documentation" link is to a video. No thanks, I'm look for a sentence of text. The next link down is a 404 error. The community link is for insiders...lots of comments about people leaving the building,whatever that means. Bottom of page, how to install. Why am I installing something when I don't know what it is? Sit…

There's a long-winded description in the first blog post:

http://www.urbit.org/2013/09/24/urbit-intro.html

Re: An immutable operating system

#128
post #113

'Clojure has transients, which basically means "inside this function, use a mutable value under the hood while building up the value, but make it immutable before it's returned"' is this essentially a ... closure?

Transients in Clojure is an added feature to the built in immutable values. Essentialy, they are immutable. But Clojure does have mutable-ish versions you can use to build up a semi mutable transient, and when you're done, convert it into an immutable value before it's returned.

The key is to make it fast. Mutable -> immutable is not an O(N) copy.

Re: An immutable operating system

#129

Earlier quoted context omitted.

You're making my point for me here. This kind of technology might make it possible to write even more performant soft real-time systems but still have the productivity benefits of GC.

I don't think I am. Trading performance for productivity is completely different discussion. It sounded like the claim here was that immutability in the OS (whatever that means) might result in a system with better performance. We have programming languages where everything is immutable (Haskell). This results in programming techniques that generate a lot of garbage. We have not seen that this results in programs wit…

Trading performance for productivity is completely different discussion.

The point is that you could possibly buy more for less in this trade off. It's not just GC. It's a close to pauseless incremental GC that might become available.

It's not so much that it has to be in an OS, though it seems it would be better in an OS, however.

Post reply on HN