9 ms·
Redox is cool but I'm pumped for the OS' that really take advantage of Rust to create new architectures.
by adamnemecek 8y ago
Redox is cool but I'm pumped for the OS' that really take advantage of Rust to create new architectures.
- k__ 8y agoLike?
- sam0x17 8y agoAs in something different from unix I take it
- stcredzero 8y agoIf an operating system was built to run lambdas instead of processes, what would that look like?
- ASipos 8y agoIf K-A-T doesn't spell 'cat', what does it spell?
- Crespyl 8y ago'kat'
- nixpulvis 8y agoWhat is a lambda to you in this case? That lambda will need to be scheduled, it will need to maintain it's scope... All the same general issues could exist. There have been plenty of machines that simply run functions, in fact before there was things we call OSes today, the machines that ran the code would typically not have an notion of time sharing, and would map even more closely to a pure lambda evaluator. Without specifics about what differences you mean, lambda = function = process = thread = fiber = service = worker = ...
- stcredzero 8y agoWhat is a lambda to you in this case? Pure functions. That lambda will need to be scheduled, it will need to maintain it's scope... All the same general issues could exist. But no users would have to be able to start processes. Instead, lambdas could be associated with persistent storage of state, and processes would be started by the OS to apply the lambdas in a simulation loop, but users wouldn't directly start processes. Perhaps thinking of those as processes isn't quite right either.
- nixpulvis 8y agoThe only truly pure functions exist in the imaginary world of mathematics, if you even believe that. But I think I kinda get your point, but would challenge you to think about this issue with the frame of mind of access control and permissions a bit. I think you'll find the need for some kind of process like task. Maybe not...
- stcredzero 8y agoThe only truly pure functions exist in the imaginary world of mathematics, if you even believe that. Note I already mentioned persistent stores of state. I think you'll find the need for some kind of process like task. Maybe not... Maybe re-read. I've already said that there would be a process like task. Lambdas will need to be associated with state. Users won't have to start processes. Instead, processes will be more like processors.
- macintux 8y agoThis sounds like the Erlang VM.
- stcredzero 8y agoI'll take that as positive feedback.
- chc4 8y ago
- someguydave 8y agoIt would look like a LISP machine from Symbolics...
- abecedarius 8y ago"A security kernel based on the lambda calculus" http://mumble.net/~jar/pubs/secureos/ http://mumble.net/~jar/pubs/secureos/ http://cap-lore.com/CapTheory/upenn/ http://cap-lore.com/CapTheory/upenn/
- nixpulvis 8y agoI feel like a new fresh look at what UNIX is today could be valuable. I wouldn't want to give up a lot of the philosophy around it. Redox does in fact do this in a number of places, for example I think the expansion on "everything is a file" [1] is a pretty awesome idea. [1]: https://doc.redox-os.org/book/design/url_scheme_resource/everything_is_a_url.html https://doc.redox-os.org/book/design/url_scheme_resource/eve...
- sam0x17 8y agoI'd love to see a "there are no paths, file system is a db" like it was originally rumored Vista was going to be. I'd also love to see more opinionated OS integration e.g. per-application volume sliders, better file system search indexing, real-time built-in file and directory watching API that can be blocking or non-blocking, standardized storage of program files instead of installed app locations being ambiguous, standardized system and app settings via a neat API, etc., etc., an easy and sane git-based package manager, etc
- GordonS 8y agoWindows 10 does per-application volume control. Chrome OS has a fixed app install location, as does Windows 10 in 'S' mode (since you can only install store apps). I remember being intrigued by the database-as-filesystem idea when it was first touted - has any OS actually implemented this? I'd be interested to see how it works in practice.
- TickleSteve 8y ago"pick" https://en.wikipedia.org/wiki/Pick_operating_system https://en.wikipedia.org/wiki/Pick_operating_system Everything old is new again... this was from the mid-60s and was relatively popular for its time.
- gvx 8y agoVery interesting. The one thing that stood out to me was this, though: > It is named after one of its developers, Dick Pick. What an unfortunate name.
- dralley 8y agoThat only makes things more confusing because Redox is explicitly not a traditional Unix. It's more like Plan9, except it goes even further than Plan9 in few places, and things like the Ion shell in Redox don't attempt to be Posix compatible.
- pjmlp 8y agoWhat about comparing Redox with Inferno instead? The actual end of the line for UNIX improvements done by the original designers. I never get the mistic around the middle stop instead of the end of the line.
- adamnemecek 8y ago* entirely async api * more light weight memory manager (possible thanks to borrow checker) * GPU first OS * a better shell. I know I can run whatever shell I want on unix but a better shell being native would go far.
- nixpulvis 8y agoI agree with the first two points, not sure how Rust and GPUs are really related yet. I mean I know you can bind into GL/etc libs, but there's something more profound about Rust's type system, and the parallelism / memory model of a GPU (or CPU/heterogeneous computation in general). AFAIK, there's no way to write GPU shader code that shares the static analysis from the Rust CPU code. It would be very interesting to be able to talk about the move semantics across the full modern computing architecture. If anyone knows work being done in this area I'd be curious to read more personally. As for a better shell, I also completely agree, but I'm not sure it needs to break POSIX. Shameless little plug, I recently started a shell in Rust myself: https://github.com/nixpulvis/oursh https://github.com/nixpulvis/oursh
- eridius 8y agoAs a fish user myself, I would love to see a new shell that retains many of the UI features of fish (like the excellent autocompletion behavior while typing) but with an actual usable modern fast scripting language. POSIX compatibility at the scripting layer is beneficial for being able to run existing shell scripts, but the sh scripting language sucks in many ways. What I'd really like to have is a shell that supports both a POSIX compatibility mode for running existing scripts, alongside a more powerful and modern scripting language for use in writing scripts targeting the new shell directly. I'm not sure how to identify which mode an arbitrary script should run in though, or which mode should be used at the command line.
- nixpulvis 8y agoI've started allowing just that `{#! }` also as a means to write other languages inside the shell syntax. Take a look at: https://nixpulvis.com/oursh/oursh/program/index.html https://nixpulvis.com/oursh/oursh/program/index.html
- protomyth 8y agoMy guess is someone will try to have an OS based on containers of Web Assembly apps. There are quite a few APIs that have been built over the years that are familiar to programmers. I do believe this will cut down on the pain of having to new develop system level tools to manage such a beast.
- bluejekyll 8y agohttps://github.com/nebulet/nebulet https://github.com/nebulet/nebulet "Nebulet is a microkernel that executes WebAssembly modules in ring 0 and a single address space to increase performance. This allows for low context-switch overhead, syscalls just being function calls, and exotic optimizations that simply would not be possible on conventional operating systems. The WebAssembly is verified, and due to a trick used to optimize out bounds-checking, unable to even represent the act of writing or reading outside its assigned linear memory."
- zaarn 8y agoWebAssembly has a few more advantages when deployed as part of the kernel; you can run things in ring 0. Even better, you can transparently remap things in memory. And even better than, you can realize IPC as a simple function pointer. Safely. Of course, you can't have everything as WebAssembly, some core drivers will need to run some critical machine code, but those could be tightly enough integrated that the overhead is almost zero (ie, by using WA imports you can turn this into a function call overhead)
- johannes1234321 8y agoThe issue with such an OS is that there aren't won't be any libraries and tools. So the OS vendor might need a custom shell, custom utilities, custom libraries for everything ... or they offer POSIX-like APIs. One area where one can see this is IncludeOS - they had their custom APIs for a long time to leverage their architecture, but are now focussed on providing POSIX compatibility ... and that's only for single purpose unikernel systems. If the OS should also be universal this is even more of a problem. (Especially if you also want a graphical desktop ...)
- nixpulvis 8y agoDon't even need to implement POSIX if you just emulate another OS inside, this seems to be a pretty viable solution for some of the cases. I'm more concerned with drivers/firmware, which could be handled the same way, but seems less appropriate.
- adamnemecek 8y ago> The issue with such an OS is that there aren't won't be any libraries and tools. This might not be as big of a deal. Rust increases your productivity quite a bit and I'm really impressed with the pace of progress in the community. I can imagine that new, better & more integrated tools will be made.
- AnIdiotOnTheNet 8y agoWith that attitude you'll never be able to ditch legacy cruft, and there's quite a lot of it in POSIX. I agree with the other poster that a compatibility layer in the form of virtualization and/or emulation should be sufficient, as long as your new OS brings something to the table that's desirable. Shunt the legacy crap off into its own contained environment and build a nice new clean one for new stuff to use.
- nixpulvis 8y agoI still think there are a plenty of reasons to support POSIX in many places. As someone who's been running fish for a while, I can appreciate the common ground it provides across the current UNIX ecosystem, but it's not like translating a bash script to fish is impossible. There should always be a supported standard, but there should be nothing forcing you too it. This is the freedom we need to demand of our OSes.
- empath75 8y agoNot really relevant to rust, but if you squint, Kubernetes is basically an operating system.